2013-02-25 70 views
1

哪個是寫數據緩衝到文件的最佳方式?哪個是寫數據緩衝到文件的最佳方式

char buf[1024]; 
FILE *fp = fopen("test", "a+"); 
  1. fwrite(buf, 1, 1024, fp);
  2. fwrite(buf, 1024, 1, fp);
  3. for (i = 0; i < 1024; i++) fwrite(buf, 1, 1, fp);
  4. 或其他更高的性能呢?
+0

我的意思是「最高性能」 – 2013-02-25 04:21:19

回答

4

循環緩慢;可能很慢。很可能,在循環體中,putc()fwrite()更好。

前兩個選項之間的區別是返回值。第一個輸出1024個單字節,如果完全成功則返回1024,如果失敗則返回一些較小的數字。第二個輸出單個1024字節的單元;如果全部寫入,則返回1;如果全部寫入,則返回0。是否重要取決於你寫短文時可能做什麼。除了退貨價值之外,兩者是相同的。

至少在您堅持使用文件流時,沒有其他更高性能的方法。切換到文件描述符打開了更多的選項,但是對數據的單個調用可能會達到最佳效果。

0

1和2是相同的...... 但是,我會做1,但像: -

fwrite(buf, sizeof(char), 1024, fp); 
+2

'sizeof(char)'總是1,所以爲了簡潔起見請使用1。 – congusbongus 2013-02-25 04:19:12

+0

一個和兩個返回值不同。 – 2013-02-25 04:20:30