古詩詞大全網 - 古詩大全 - C語言用read讀取串口信息,按每字節讀取和壹次性讀取壹定長度效率上有區別嗎?

C語言用read讀取串口信息,按每字節讀取和壹次性讀取壹定長度效率上有區別嗎?

肯定有區別的,而且相差還比較大。

因為read是用戶態程序,然後每read壹次都對應壹次系統調用 (從用戶態切換到內核態,再切回到用戶態),其實耗時最多的就是狀態切換。

如果壹次性讀取5個字節,那麽就只有壹次系統調用(兩個狀態切換),

如果壹次讀壹字節,需要讀5次,就有5次系統調用 (10個狀態切換)。

具體相差多大,跟實際的環境有關,測試的話要大量的數據才能看出來。