繁体   English   中英

第一个RandomAccessFile初始化缓慢,随后很快

[英]First RandomAccessFile initialization slow, subsequently fast

我注意到,Java中RandomAccessFile对象的第一次初始化比随后将RandomAccessFile对象初始化为磁盘上的同一文件要慢得多。 是否有一些后台缓存操作系统可以实现这一点?

例证:我正在从磁盘加载图像并允许用户翻阅它们。 我希望瓶颈是图像的显示,但在第一次加载时,瓶颈是加载图像(使用JProfiler发现瓶颈;每次调用RandomAccessFile<Init> ~8ms)。 如果我翻回我已经查看的图像,对RandomAccessFile<Init>的调用只有几微秒。

有没有人见过这样的东西? 有没有解决方法? 数据集可能包含100,000个图像,因此初始化一堆虚拟RandomAcessFile对象可能不可行。

初始化的代码行很简单:

RandomAccessFile fileIn = new RandomAccessFile(abspath, "r");

是的,操作系统缓存。

如果绕过操作系统缓存,后续打开的文件将与第一个文件一样慢,那么为什么要这样呢?

第一次打开文件时缓存不会减慢,它可以提高重新打开文件的性能,而不必等待慢速硬盘驱动器读取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM