分別使用標準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...