在cpp reference中,它声称fflush是:
使输出文件流与实际同步 文件的内容。
确实,我不明白这意味着什么。我只是想知道,在那段代码中,如果我拿出fflush,有什么不同吗?
我测试了它,似乎有一点点差异,但我找不到模式。任何人都能为我详细解释一下吗?提前谢谢。
#include<stdio.h>
int i;
int main()
{
fork();
for(i=0;i<1000;i++)
{
printf("%d\n",i);
fflush(stdout);// without fflush, is there any difference?
}
}
答案 0 :(得分:3)
标准输出通常在您写入换行符时刷新。如果要正确测试,请打开文件并写入。为了使测试有用,您将不得不编写比仅仅几个整数更多的数据。您应该发现省略fflush
将导致代码明显加快。尝试计时这两个循环......
冲洗:
FILE * fp = fopen("scratch", "w");
for( int i = 0; i < 1000000; i++ ) {
fprintf( fp, "Hello world" );
fflush(fp);
}
fclose(fp);
没有冲洗:
FILE * fp = fopen("scratch", "w");
for( int i = 0; i < 1000000; i++ ) {
fprintf( fp, "Hello world" );
}
fclose(fp);
在我的机器上,结果是:
With fflush: 4.57 seconds
Without fflush: 0.24 seconds