c - 是否可以将 mmap() 用于整个地方的 4Kb 块,还是一次将整个文件 mmap() 更好?
问题描述
我想处理一个由 4Kb 块组成的文件。
随着事情的发展,我将编写更多数据并映射新部分,取消映射我不再需要的部分。
map()
当要映射的文件数据总量约为 4Gb 时,仅 4Kb 是否太小?(即大约 1,048,576 个单独映射的块)。
我担心打这么多小mmap()
电话最终不会有效率,即使它们很好地针对我想要使用的确切块。同时,它可能仍然比每次更改一个字节时都使用read()
/来读取和写入这些块要好。write()
解决方案
64 位架构上不乏地址空间。除非您的代码也必须在 32 位架构中工作(现在很少见),否则将整个文件映射一次,避免多次mmap
调用和数千个额外内核对象的开销。随着阅读和写作的变化,这取决于你想要的语义。看到这个答案。
推荐阅读
- java - 澄清关于扩展 java 中的 throw 和 catch 函数
- mysql - Mysql对两个字段分组并在SQL中计数
- css - 是否有可能在 NW.js 应用程序中获得本机 Windows 菜单栏,或者至少为它们设置样式?
- java - 对于带有数组列表的每个循环,返回排序后的数组,但不返回通过添加值来更改数组列表
- javascript - 如何在 JavaScript 中添加两个数字?
- javascript - Array(SIZE).fill(1):时间增加 500 倍,内存增加 70 倍,数据增加 10 倍
- reactjs - TypeError:this.props.changeUser 不是函数
- javascript - 图像未显示在服务器上,但在节点 js 中的 localhost 上工作正常
- python - 未正确设置 stderr 是我的程序中缺少输出的原因。除了猜测之外,有没有合适的方法来找出这个原因?
- ruby-on-rails - rails webpacker.yml not found,为什么这会显示在新的设置应用程序中?