我怎样才能找到硬盘速度

时间:2010-08-01 15:23:22

标签: c# performance-testing hard-drive

如何找到硬盘速度?我无法使用System.IO.File.Copy并使用计时器来获取硬盘速度,因为在缓存文件之后,速度将真正高于实时。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

在写入文件之后后续读取速度远高于预期的原因是,当写入文件(即在内存中)时,该文件由磁盘系统高速缓存中的OS高速缓存。后续文件读取实际上是从内存而不是磁盘读取的。

请参阅此代码项目文章,该文章提供了通过利用FILE_FLAG_NO_BUFFERING标志绕过操作系统磁盘缓存的解决方案:

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

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

答案 1 :(得分:0)

你在询问“实时”。因为在实际情况下缓存正在使用中,我没有看到任何问题。您可能希望使用某些脚本或类似程序来运行程序而不是某些File.Copy或其他更简单的测试。

但真正的问题是,那么呢?即你试图找出一些磁盘是否足够快,或者你是否试图找出你的程序是否足够快?