gpt4 book ai didi

java - 从 HDD 或 OS 缓冲区缓存或 RAM DISK 读取文件所需的时间几乎相同

转载 作者:行者123 更新时间:2023-11-30 02:57:17 26 4
gpt4 key购买 nike

我有一个java程序,它只读取一个12GB的文件

 Reader reader1 = new FileReader(filePath);
try (BufferedReader bufferedReader = new BufferedReader(reader1)) {
String line = bufferedReader.readLine();
while (line != null) {
line = bufferedReader.readLine();
}
}

首次读取文件大约需要 53 秒。

然后我检查文件是否已缓存或未使用RAMMAP,文件已完全缓存并且位于备用列表中。

我再次运行上面的程序,这次同样花费了大约 53 秒。为什么操作系统缓冲区缓存完文件后性能却没有提高。

我还创建了一个 RAM DISK,将输入文件复制到 RAM DISK 中,然后再次运行上面的代码,即使现在也花费了大约 54 秒。当 RAM IOPS 更快时,为什么它没有反射(reflect)在这里

最佳答案

预取。

您正在按顺序读取文件。您的磁盘速度足够快,可以提供 12GB/53 秒 = 226 MB/秒。读取其中的一部分后,操作系统会假设您需要越来越多的数据,并将下一个卡盘读入内存,以便在需要时可用。

速度是所需CPU 和所需IO 时间的最大值。 CPU需要53s,磁盘也不慢。您的任务受 CPU 限制。

When RAM IOPS is lot more faster, why it is not reflecting here.

从随机位置或多个文件中读取 12GB,您就会发现磁盘有多慢。在您的情况下,持续时间计算为最大值,并且 max(53, 1) == max(53, 53)

关于java - 从 HDD 或 OS 缓冲区缓存或 RAM DISK 读取文件所需的时间几乎相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36886362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com