为什么人们说MappedByteBuffer的mmap更快? [英] Why people say mmap by MappedByteBuffer is faster?

查看:330
本文介绍了为什么人们说MappedByteBuffer的mmap更快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I think mmap is not fast as using virtual memory, it still has harddisk I/O.

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

But many people on Internet say it's fast, but no reason.

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

In my test, I read a file using BufferedReader andMappedByteBuffer, the first one is faster.

推荐答案

MappedByteBuffer 适合读取不按顺序读取的二进制文件。

A MappedByteBuffer is suitable for reading binary files that are not read sequentially.

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

An example is reading a database index file containing tree data-structures with file offsets to other parts of the file. In this case, you are continually seeking forwards and backwards in the file and reading data and my tests showed that using a MappedByteBuffer was much faster than using a RandomAccessFile.

按顺序读取文本文件或二进制文件 BufferedReader
BufferedInputStream 效率很高。使用
a内存映射文件通常没有优势,管理内存映射
的开销可能会使 MappedByteBuffer 慢于 BufferedReader BufferedInputStream

Reading a text file or binary file sequentially with a BufferedReader or BufferedInputStream is efficient. There is normally no advantage in using a memory mapped file for this and the overhead of managing the memory mapping will probably make a MappedByteBuffer slower than a BufferedReader or BufferedInputStream.

这篇关于为什么人们说MappedByteBuffer的mmap更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆