mmap如何使大文件处理更快?

时间:2017-07-19 13:48:02

标签: linux io mmap

我所知道的是,mmap可以将进程的虚拟内存页映射到磁盘上的文件。我们可以在程序中对内存进行写入和读取,并将其反映在文件的内容中。

这种机器如何比例如常规读取sys-call更快地对文件进行顺序读取(也许是处理)?它如何更快地进行搜索(二进制搜索,如果文件被排序)?

我从几个来源得到了mmap确实完成我所说的内容,但我找不到任何详细说明。

1 个答案:

答案 0 :(得分:0)

由于限制因素是从磁盘读取,它可能不会更快......使用这两种方法,您可以配置预读以加快顺序读取,这可能是您可以做的最好。

mmap() - 与read()相比,文件具有其他优势:您不必关心内存管理。如果文件非常大(超出了您希望在过程中使用的内存),则必须自行管理文件的哪些部分以及丢弃的文件。在mmap的情况下,来自操作系统的常用内存管理例程决定,文件的哪些部分保留在内存中以及在内存争用的情况下丢弃哪些内容,同时关注整个系统的内存使用情况,而不仅仅是您的流程。如果你决定某些部分必须始终留在内存中,你可以mlock()那些。

但是在一般情况下我没有看到很大的性能提升。