为什么第一次从硬盘读取文件比后续读取慢?

为什么第一次从硬盘读取文件比后续读取慢?

我正在用一个自己编写的程序测量我的硬盘速度。(这是一种家庭作业,所以我不需要有关现有工具的建议来做这件事)。

我使用下面的代码来实现:

    for(int attemptNumber =0; attemptNumber < ATTEMPTS; attemptNumber++) {

        long start = System.currentTimeMillis();
        BufferedReader bf = new BufferedReader(new FileReader(FILENAME));
        int c = 0;
        while((c = bf.read()) != -1) {

        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }

在输出中,第一个数字通常是接下来任何一个数字的 3 倍:

14234
5130
4859
... etc

当我重新启动应用程序时,我得到了相同的结果:第一次读取速度慢了约 3 倍。为什么会发生这种情况?

编辑:我不确定这是否是正确的 SO 网站,我应该在哪里发布此内容?

答案1

大多数操作系统和一些硬件也维护磁盘缓存。第一次读取来自实际磁盘,速度较慢,但​​后续读取来自速度更快的缓存。

相关内容