为什么WalkingFileTree第二次更快?

时间:2014-02-25 12:02:04

标签: java windows performance filesystems

我正在使用Files.walkfiletree()中的java.NIO函数,我正在查看一棵非常大的树,所以当我第一次运行应用程序时(第一次,我的意思是每次打开计算机)该应用程序需要一些时间,但第二次真的很快。 为什么?是一些缓存工作?我能以某种永久的方式使用它吗?

1 个答案:

答案 0 :(得分:2)

当您从文件系统读取数据时,该信息正在缓存,使得再次访问它的速度更快。在某些情况下,速度提高100倍或更多。它将数据缓存在内存中,因为它更快。

最简单的解决方案是在您需要之前访问/加载此目录结构,您将获得缓存性能。例如你可以在启动时这样做。

另一个解决方案是获得更快的SSD。访问文件结构会执行大量磁盘操作以获取所有信息。硬盘可以达到120 IOPS,廉价的SSD可以达到40,000 IOPS,而快速SSD可以达到250,000 IOPS。这可以大大减少加载此信息的时间。

但是,由于您无法控制内存中的内容,除非重复访问它,否则以后可能会将其从磁盘缓存中推出。