Как найти скорость на жестком диске? Я не могу использовать System.IO.File.Copy
и использовать таймер для получения скорости жесткого диска, потому что после кэширования файла скорость будет действительно выше, чем в реальном времени.
Что я могу сделать вместо этого?
Причина, по которой последующая скорость чтения намного выше, чем ожидалось после записи файла, заключается в том, что файл кэшируется ОС в кеше дисковой системы, когда он написан, например, в памяти. Последующее чтение файла фактически считывается из памяти, а не из диска.
Пожалуйста, ознакомьтесь с этой статьей проекта кода, которая предлагает решение для обхода кэш-памяти ОС, используя флаг FILE_FLAG_NO_BUFFERING:
http://www.codeproject.com/KB/files/unbuffered.aspx
Это решение может использоваться в вашем контексте, чтобы избежать кеширования ОС, и, таким образом, получить "реальные" скорости диска.
Вы спрашиваете о "реальном времени". Поскольку в реальном случае кеш используется, я не вижу никаких проблем. Вы можете использовать некоторые script или аналогичные для запуска вашей программы, а не некоторые File.Copy или другие более простые тесты.
Но реальный вопрос: что тогда? То есть вы пытаетесь выяснить, достаточно ли достаточно одного диска или вы пытаетесь выяснить, достаточно ли ваша программа?