Страница: 1 |
Страница: 1 |
Вопрос: HDD: чтение и запись
Добавлено: 21.03.09 01:15
Автор вопроса: Winand | Web-сайт:
Недавно спрашивал о создании "бенчмарка"
В тесте ЖД создаю файл, делаю 5 его копий и убиваю их. Но результаты часто сильно колеблются по времени. На это влияет ОС? Вообще подскажите, как изменить подход к задаче, чтобы более-менее стабильные результаты получать
On Error GoTo 1:
Dim file As Integer, i As Long, dat As String * 1024, tick As Long, tick_d As Long
Print ">> Тест 2: чтение/запись"
tick = GetTickCount
For i = 1 To 102400
Next i
For i = 1 To 5
Next i
tick_d = GetTickCount - tick
Print , "Выполнение пустого цикла:", tick_d
DoEvents
file = FreeFile
Open path & "bench" For Binary Access Read Write As file
dat = Space(1024)
tick = GetTickCount
For i = 1 To 51200
Put file, , dat
Next i
Do Until EOF(file)
Get file, , dat
Loop
Close file
For i = 1 To 5
Call FileCopy(path & "bench", path & "bench" & i)
Call Kill(path & "bench" & i)
Next i
Call Kill(path & "bench")
tick = GetTickCount - tick - tick_d
Print , "Время выполнения:", tick
testRdWr = tick
Exit Function
1: MsgBox "error in testRdWr() function"
End Function
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 21.03.09 02:01
Нужен прямой доступ.
Хотя может ктото знает другой способ.
Стандартные методы обращения кэшируются системой.
В первый раз этот бенчмарк может и покажет чтото, но дальше ерунда,
перезагрузишь винду и опять тоже.
Номер ответа: 2
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #2
Добавлено: 21.03.09 02:19
Я бы попробовал читать какойнить большой файл и посчитать kbps.
Номер ответа: 3
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #3
Добавлено: 21.03.09 04:03
Winand жжот, даже исходничек чиркнул ))
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 21.03.09 11:48
Нестабильные результаты - это потому что ты под виндой и в ring3. Либо тебе писать драйвер уровня ядра, либо приложение под dos. Почему?
На работу твоего приложения оказывает влияние активность всего программного окружения в единицу времени. Одновременно с твоим бенчмарком другие программы и сама система обращаются (читают, пишут) к винту. Как сказал Smith, системное кэширование тоже может влиять на результаты.
Тестирование устройств хранения проводят с несколькими файлами разных размеров на запись и чтение (иногда на копирование, перемещение, удаление) и по много циклов на каждый файл, после чего результаты суммируют, взвешивают, обообщают. Почитай статьи по тестированию накопителей, например на http://www.3dnews.ru/