我认为mmap不能像使用虚拟内存那样快,它仍然具有硬盘I / O。

但是互联网上的许多人都说它很快,但是没有理由。

在测试中,我使用BufferedReader和MappedByteBuffer读取文件,第一个更快。

最佳答案

MappedByteBuffer适用于读取未顺序读取的二进制文件。

一个示例是读取包含以下内容的数据库索引文件
树数据结构,文件偏移到文件的其他部分。在这
在这种情况下,您不断在文件中寻找前进和后退的位置,
读取数据并
我的测试表明,使用MappedByteBuffer比使用RandomAccessFile快得多
BufferedReader

BufferedInputStream顺序读取文本文件或二进制文件
MappedByteBuffer是有效的。使用通常没有优势
一个内存映射文件,以及管理内存映射的开销
BufferedReader可能会比BufferedInputStream或慢。

关于java - 为什么人们说MappedByteBuffer的mmap更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7200690/

10-11 04:54