You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下C语言mmap场景中替代文件删除的更快方案问询

问题:mmap输出文件时的性能优化问题

为了竞赛需求,我需要尽可能快速完成文件读取、内容处理后写入另一文件的流程。目前使用mmap映射输入和输出文件进行读写,但发现映射已存在的输出文件时,整体运行速度比映射不存在的文件慢2-3倍,尤其是munmap操作耗时明显更长。

我尝试先检查输出文件是否存在,若存在则删除,这能显著提升速度,但remove操作耗时约10ms,而处理100MB输入文件的算法仅需100ms,该耗时占比过高。

对应的代码片段:

if(access(argv[2], F_OK) == 0) {
    if(remove(argv[2]) != 0) {
        fprintf(stderr, "%s\n", "Error removing output file");
        exit(0);
    }
}

其中access调用很快,耗时的是remove操作。

已尝试的无效方法:

  • 映射前用O_TRUNC打开输出文件(mmap仍慢)
  • 写入临时空文件后重命名为输出文件(耗时与remove相当)
  • 使用unlink(耗时与remove相当)

请问是否有更快的方法实现与删除相同的效果?

内容的提问来源于stack exchange,提问作者Muhammad Yojer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:55:19