首页 > 解决方案 > 是否可以将 mmap() 用于整个地方的 4Kb 块,还是一次将整个文件 mmap() 更好?

问题描述

我想处理一个由 4Kb 块组成的文件。

随着事情的发展,我将编写更多数据并映射新部分,取消映射我不再需要的部分。

map()当要映射的文件数据总量约为 4Gb 时,仅 4Kb 是否太小?(即大约 1,048,576 个单独映射的块)。

我担心打这么多小mmap()电话最终不会有效率,即使它们很好地针对我想要使用的确切块。同时,它可能仍然比每次更改一个字节时都使用read()/来读取和写入这些块要好。write()

标签: cperformancemmap

解决方案


64 位架构上不乏地址空间。除非您的代码也必须在 32 位架构中工作(现在很少见),否则将整个文件映射一次,避免多次mmap调用和数千个额外内核对象的开销。随着阅读和写作的变化,这取决于你想要的语义。看到这个答案


推荐阅读