加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

fopen()在win32上的表现

发布时间:2020-12-14 04:20:35 所属栏目:Windows 来源:网络整理
导读:我正在尝试编写一些适用于 Linux和Win32的代码.我发现它们之间最显着的区别(在我的代码中)是fopen()的性能. 以下代码在我的Ubuntu上需要5秒,而相同的代码在Windows XP上需要超过100秒.我想在这里做一个说明,ubuntu是VM,而XP是在真机上. time_t start = time(
我正在尝试编写一些适用于 Linux和Win32的代码.我发现它们之间最显着的区别(在我的代码中)是fopen()的性能.
以下代码在我的Ubuntu上需要5秒,而相同的代码在Windows XP上需要超过100秒.我想在这里做一个说明,ubuntu是VM,而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()时,它会阻塞,直到字节在物理上位于磁盘上(或者至少直到磁盘显示它们为止) – 另一方面文件系统立即返回,即使苍蝇是还在写

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读