我正在用一个自己编写的程序测量我的硬盘速度。(这是一种家庭作业,所以我不需要有关现有工具的建议来做这件事)。
我使用下面的代码来实现:
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
大多数操作系统和一些硬件也维护磁盘缓存。第一次读取来自实际磁盘,速度较慢,但后续读取来自速度更快的缓存。