Как я могу найти скорость жесткого диска

2

Как найти скорость на жестком диске? Я не могу использовать System.IO.File.Copy и использовать таймер для получения скорости жесткого диска, потому что после кэширования файла скорость будет действительно выше, чем в реальном времени.

Что я могу сделать вместо этого?

  • 1
    Какая скорость тебе нужна? Читать? Написать? Последовательная? Случайные?
  • 0
    скорость письма ? Также FileCopy, если это возможно?
Теги:
performance-testing
hard-drive

2 ответа

2
Лучший ответ

Причина, по которой последующая скорость чтения намного выше, чем ожидалось после записи файла, заключается в том, что файл кэшируется ОС в кеше дисковой системы, когда он написан, например, в памяти. Последующее чтение файла фактически считывается из памяти, а не из диска.

Пожалуйста, ознакомьтесь с этой статьей проекта кода, которая предлагает решение для обхода кэш-памяти ОС, используя флаг FILE_FLAG_NO_BUFFERING:

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

Это решение может использоваться в вашем контексте, чтобы избежать кеширования ОС, и, таким образом, получить "реальные" скорости диска.

0

Вы спрашиваете о "реальном времени". Поскольку в реальном случае кеш используется, я не вижу никаких проблем. Вы можете использовать некоторые script или аналогичные для запуска вашей программы, а не некоторые File.Copy или другие более простые тесты.

Но реальный вопрос: что тогда? То есть вы пытаетесь выяснить, достаточно ли достаточно одного диска или вы пытаетесь выяснить, достаточно ли ваша программа?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню