2

我怎样才能找到硬盘速度?我不能使用System.IO.File.Copy和使用定时器来获取硬盘速度,因为缓存文件后,速度真的会高于实时。

我能做些什么呢?

4

2 回答 2

2

写入文件后后续读取速度远高于预期的原因是文件在写入时被操作系统缓存在磁盘系统缓存中,即内存中。随后的文件读取实际上是从内存而不是磁盘读取的。

请参阅此代码项目文章,它提供了一种通过利用FILE_FLAG_NO_BUFFERING标志绕过 OS 磁盘缓存的解决方案:

http://www.codeproject.com/KB/files/unbuffered.aspx

此解决方案可在您的上下文中使用,以避免操作系统磁盘缓存,从而获得“真正的”磁盘速度。

于 2010-08-01T15:28:32.130 回答
-1

你问的是“实时”。由于在实际情况下正在使用缓存,因此我看不到任何问题。您可能想使用一些脚本或类似的东西来运行您的程序,而不是一些 File.Copy 或其他更简单的测试。

但真正的问题是,然后呢?即,您是在尝试找出某个磁盘是否足够快,还是您在尝试找出您的程序是否足够快?

于 2010-08-02T05:19:41.043 回答