2013-02-25 65 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