我正在尝试编写一些同时适用于 Linux 和 Win32 的代码。我发现它们之间最显着的区别(在我的代码中)是 fopen()
的性能。
以下代码在我的 Ubuntu 上需要 5 秒,而相同的代码在 Windows XP 上需要 100 多秒。这里要说明一下,ubuntu是虚拟机,XP是真机。
time_t start = time(NULL);
for(int i=0; i < 100000; ++i){
FILE *fp = fopen("a.txt", "a");
if (fp != NULL)
{
fprintf(fp, "Hello World");
fclose(fp);
}
}
time_t end = time(NULL);
printf("\n It took %d seconds \n", end-start);
显然 fopen()
是造成这种差异的原因。我想知道为什么会有这么大的差异?
最佳答案
Clearly fopen() is the cause of this difference
不,它更有可能是文件系统刷新。
在一个系统上,当您写入或更可能调用 fclose() 时,它会阻塞,直到字节物理地存储在磁盘上(或至少直到磁盘显示它们在磁盘上)——在另一个系统上,文件系统会立即返回,即使苍蝇是还在写
关于c - fopen() 在 win32 上的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295171/