哪个是写数据缓冲到文件的最佳方式?哪个是写数据缓冲到文件的最佳方式
char buf[1024];
FILE *fp = fopen("test", "a+");
fwrite(buf, 1, 1024, fp);
fwrite(buf, 1024, 1, fp);
for (i = 0; i < 1024; i++) fwrite(buf, 1, 1, fp);
- 或其他更高的性能呢?
哪个是写数据缓冲到文件的最佳方式?哪个是写数据缓冲到文件的最佳方式
char buf[1024];
FILE *fp = fopen("test", "a+");
fwrite(buf, 1, 1024, fp);
fwrite(buf, 1024, 1, fp);
for (i = 0; i < 1024; i++) fwrite(buf, 1, 1, fp);
循环缓慢;可能很慢。很可能,在循环体中,putc()
比fwrite()
更好。
前两个选项之间的区别是返回值。第一个输出1024个单字节,如果完全成功则返回1024,如果失败则返回一些较小的数字。第二个输出单个1024字节的单元;如果全部写入,则返回1;如果全部写入,则返回0。是否重要取决于你写短文时可能做什么。除了退货价值之外,两者是相同的。
至少在您坚持使用文件流时,没有其他更高性能的方法。切换到文件描述符打开了更多的选项,但是对数据的单个调用可能会达到最佳效果。
1和2是相同的...... 但是,我会做1,但像: -
fwrite(buf, sizeof(char), 1024, fp);
'sizeof(char)'总是1,所以为了简洁起见请使用1。 – congusbongus 2013-02-25 04:19:12
一个和两个返回值不同。 – 2013-02-25 04:20:30
我的意思是“最高性能” – 2013-02-25 04:21:19