1. 程式人生 > >fstream與 C 風格(例如fread 和 fwrite )兩種讀寫檔案方法的效率比較

fstream與 C 風格(例如fread 和 fwrite )兩種讀寫檔案方法的效率比較

為了探錄c++ 風格的fstream C 風格(例如fread fwrite )兩種讀寫檔案的方法的效率,我特意做了兩個實驗。

我的機器是Windows XP, Visual Studio 2008

1. 測試寫檔案速度

程式設計思路: 將TEST_SIZE個字元用兩種方式寫入檔案,記錄兩種方式的耗時。

實驗程式碼:

 

實驗結果:

圖1

圖2

圖3

**從圖1、2、3,可以看出, ofstream 的 << 運算子 所耗時 是fwrite()的近三倍

of<<的程式碼改成了: of.write(tmp,1); 後結果:

實驗程式碼:

 

實驗結果:

圖4

圖5

圖6

對比圖4 和 圖1、 圖5 和 圖2、圖6 和 圖3, 可以看到  << 運算子沒有 ofstream.write(), 快, 但兩者還是沒有 fwrite() 快

結論: 效率   fwrite() >  ofstream.operator<<() > ofstream.write() 

3. 下面做讀檔案的比較:

程式設計思路: 用兩種方法去讀一個近100M的文字,記錄時間。

實驗程式碼:

 

實驗結果:

圖7

結論: 讀取一個 100M 的檔案, fread() 的效率 是 ifstream.read()的將近十倍! (此結論驚人!)