我认为mmap并不像使用虚拟内存那么快,它仍然具有硬盘I/O.
但互联网上的很多人都说这很快,但没有理由.
在我的测试中,我使用BufferedReader和MappedByteBuffer读取文件,第一个更快.
A MappedByteBuffer适用于读取不按顺序读取的二进制文件.
一个示例是读取包含树数据结构的数据库索引文件,该文件具有文件偏移到文件的其他部分.在这种情况下,你不断在文件中寻找前进和后退并读取数据,我的测试显示使用a MappedByteBuffer比使用a快得多
RandomAccessFile.
读取文本文件或文件二进制顺序用BufferedReader
或者BufferedInputStream是有效的.使用内存映射文件通常没有优势,管理内存映射的开销可能MappedByteBuffer比a BufferedReader或更慢BufferedInputStream.
| 归档时间: |
|
| 查看次数: |
4117 次 |
| 最近记录: |