【发布时间】:2015-07-13 16:48:09
【问题描述】:
我编写了一个程序来使用一个简单的缓冲阅读器从一个简单的 1GB 文件中读取内容。
我记录了从开始到结束的时间,以此来计算所用的时间。
我发现一个有趣的现象是,第一次运行时,读取速度大约为 80~90MB/s,但是当我第二次运行时,它的读取速度要快得多,速度约为 320MB /s.
我猜这可能是内存缓存问题的结果,但我不知道如何解决。
【问题讨论】:
-
似乎磁盘缓存(在磁盘的物理缓存或操作系统的内存映射缓存上)导致第二次运行加速。为什么会出现这个问题?
-
缓存、JIT 和类不必在第二次尝试时重新加载。
-
@MadConan 缓存一个类不会使您从磁盘读取的速度提高三倍。虽然这可能是一个因素,但几乎可以肯定是因为读取缓存。
-
@ChrisSprague 是的,我在最初发表评论后意识到了这一点。我编辑了它,虽然有点模糊。
-
修复它算什么?
标签: java file caching memory io