標準IO與系統IO比較

2021-09-25 15:06:54 字數 1091 閱讀 9879

分別使用標準io與系統io隨機寫入1000000個整數到檔案,比較哪種更快,為什麼?

#include

#include

intmain()

fclose

(fwp)

;}

real	0m0.113s 標準io 

user 0m0.100s

sys 0m0.008s

#include

#include

#include

#include

intmain()

for(

int i=

0;i<

1000000

;i++

)close

(fd)

;}

real	0m2.845s   系統io

user 0m0.268s

sys 0m2.572s

#include

#include

#include

#include

intmain()

int arr[

8192]=

, i;

for(i=

0; i<

1000000

; i++

)write

(fd,

&arr,

(i%8192)*

4);close

(fd)

;}

real	0m0.064s 設定過緩衝區的系統io

user 0m0.060s

sys 0m0.000s

因為標準io使用了緩衝技術,當資料寫入時並沒有立即把資料交給核心,而是先存放在緩衝區中,當緩衝區滿時,會一次性把緩衝中的資料交給核心寫到檔案中,這樣就減少核心態與使用者態的切換次數。

而系統io每寫一次資料就要進入一次核心態,這樣就浪費了大量時間進行核心態與使用者態的切換,因此用時更長。

如果為系統io,設定更大的緩衝區,它會比標準io更快。

系統IO與標準IO

第十章的學習中,我們學習了open,close,read,lseek,statu函式以及理解了共享檔案的定義,下面通過對一些例子的分析來進一步了解第十章學習的內容。例1 ffiles1.c int main int argc,char ar 該例的執行結果為 分析 在該例中,首先開啟了同乙個檔案3次...

Unix 標準I O總結和與檔案I O的比較

我們可以將檔案i o視為系統呼叫,核心要執行i o操作,這裡涉及到頁快取 快取記憶體區 的概念,檔案i o執不執行與快取區有關。而標準i o是對系統i o呼叫的封裝,標準i o也有快取區 行快取的概念。正是由於這二級的快取模式。導致標準i o的效率很低。當開啟乙個流時,標準i o函式fopen返回乙...

檔案系統之標準IO與系統呼叫IO

io操作是我們程式執行的基礎,資料在程式執行結束時需要儲存就必須使用io操作。io主要包括兩類 標準io與系統io 一 標準io 標準io是為了避免跨平台移植引起的不必要異常,指定的一系列標準函式,無論linux windows都可以使用。標準io常用api包括 fopen fwrite fread...