Форум: "Прочее";
Текущий архив: 2013.07.28;
Скачать: [xml.tar.bz2];
ВнизРебят, потестите пожалуйста Найти похожие ветки
← →
Inovet © (2013-02-18 12:56) [120]> [119] DevilDevil © (18.02.13 12:19)
Статистики маловато.
← →
megavoid © (2013-02-18 13:51) [121]Windows 8, Hitachi HDT725032VLA360
write_test.exe
Top 5:
2406ms: 256kb, Overlapped | WriteThrough
2703ms: 256kb, Overlapped | Sequential | WriteThrough
2718ms: 256kb, NoBuffering
2719ms: 256kb, NoBuffering | Sequential
2719ms: 128kb, Overlapped | WriteThrough
Worse 5:
4828ms: 64kb, Sequential | WriteThrough
4640ms: 64kb, NoBuffering | Overlapped | WriteThrough
4625ms: 64kb, WriteThrough
4610ms: 64kb, NoBuffering | WriteThrough
4437ms: 64kb, NoBuffering | Sequential | WriteThrough
read_test.exe
Top 5:
1734ms: 256kb, Overlapped
1735ms: 128kb, Sequential
1735ms: 64kb, Overlapped | Sequential
1750ms: 128kb, Default
1750ms: 128kb, NoBuffering | Overlapped
Worse 5:
2062ms: 256kb, Sequential
1844ms: 256kb, NoBuffering | Sequential
1844ms: 128kb, NoBuffering
1828ms: 256kb, Default
1813ms: 256kb, Overlapped | Sequential
← →
megavoid © (2013-02-18 13:54) [122]Windows 8, OCZ-VERTEX4
write_test.exeTop 5:
1985ms: 256kb, Overlapped | WriteThrough
2000ms: 128kb, Overlapped | Sequential | WriteThrough
2062ms: 128kb, Overlapped | WriteThrough
2063ms: 64kb, Overlapped | Sequential | WriteThrough
2110ms: 128kb, Overlapped
Worse 5:
3016ms: 64kb, Sequential | WriteThrough
2719ms: 64kb, NoBuffering | WriteThrough
2703ms: 64kb, NoBuffering | Overlapped | Sequential
2656ms: 64kb, NoBuffering | Overlapped
2656ms: 128kb, NoBuffering | Overlapped
read_test.exeTop 5:
359ms: 128kb, Overlapped
359ms: 128kb, Overlapped | Sequential
359ms: 256kb, Default
359ms: 256kb, Overlapped
359ms: 256kb, NoBuffering | Overlapped | Sequential
Worse 5:
656ms: 64kb, NoBuffering
641ms: 256kb, NoBuffering
641ms: 256kb, NoBuffering | Sequential
609ms: 64kb, NoBuffering | Sequential
594ms: 128kb, NoBuffering | Sequential
← →
dmk © (2013-02-18 14:45) [123]А нельзя ли сделать оболочку, прогресс бар и галочки, чтобы включать/отключать флаги?! И скорость в Мб/с показывать. А то не наглядно как-то :)
← →
DevilDevil © (2013-02-18 14:49) [124]> Inovet © (18.02.13 12:56) [120]
> Статистики маловато.
согласен !
> dmk © (18.02.13 14:45) [123]
>
> А нельзя ли сделать оболочку, прогресс бар и галочки, чтобы
> включать/отключать флаги?! И скорость в Мб/с показывать.
> А то не наглядно как-то :)
я если честно - не очень как-то понял, как это реализовать
у меня была задача опробовать сразу все варианты размера/опций
топ лучших и худших сделан для удобства
если есть время/желание - сооруди такую утилиту, о которой ты говоришь
пример можно посмотреть в TestPlatform.pas
← →
DevilDevil © (2013-02-18 15:05) [125]Не знаю, насколько правильно
но я увеличил загруженность процессора при чтении
и убрал NoBuffering для записи, потому что всёравно самый плохой результат выдают
качать здесь: http://zalil.ru/34271961
read_test.exe
Windows XP, SAMSUNG SP1213NTop 5:
6984ms: 128kb, NoBuffering | Overlapped | Sequential
7015ms: 64kb, NoBuffering | Overlapped | Sequential
7031ms: 128kb, NoBuffering | Overlapped
7047ms: 64kb, NoBuffering | Overlapped
7360ms: 256kb, NoBuffering | Overlapped
Worse 5:
10844ms: 64kb, NoBuffering
10359ms: 256kb, Sequential
10235ms: 256kb, NoBuffering | Sequential
10109ms: 256kb, NoBuffering
9547ms: 128kb, Sequential
Top 5:
7000ms: 256kb, NoBuffering | Overlapped | Sequential
7015ms: 64kb, NoBuffering | Overlapped | Sequential
7047ms: 256kb, NoBuffering | Overlapped
7093ms: 128kb, NoBuffering | Overlapped | Sequential
7282ms: 128kb, Overlapped
Worse 5:
10875ms: 64kb, NoBuffering
10750ms: 64kb, Sequential
9953ms: 64kb, Default
9282ms: 64kb, NoBuffering | Sequential
9281ms: 128kb, NoBuffering
write_test.exe
Windows XP, SAMSUNG SP1213NTop 5:
5922ms: 128kb, Overlapped | WriteThrough
5968ms: 256kb, Overlapped | Sequential | WriteThrough
5984ms: 256kb, Overlapped | WriteThrough
6015ms: 128kb, Overlapped | Sequential | WriteThrough
6203ms: 128kb, Sequential
Worse 5:
14703ms: 64kb, WriteThrough
8390ms: 128kb, WriteThrough
8219ms: 64kb, Sequential | WriteThrough
8094ms: 256kb, Sequential | WriteThrough
7953ms: 64kb, Overlapped | Sequential
Top 5:
5875ms: 128kb, Overlapped | Sequential | WriteThrough
5969ms: 128kb, Overlapped | WriteThrough
6000ms: 256kb, Overlapped | WriteThrough
6015ms: 256kb, Overlapped | Sequential | WriteThrough
6156ms: 64kb, Overlapped | Sequential
Worse 5:
7813ms: 64kb, WriteThrough
7750ms: 64kb, Sequential | WriteThrough
7359ms: 128kb, Default
7328ms: 64kb, Default
7141ms: 128kb, WriteThrough
read_test.exe
Windows XP, Hitachi HDS721616PLA380Top 5:
4813ms: 64kb, Overlapped
4828ms: 128kb, NoBuffering | Overlapped
4921ms: 256kb, Overlapped
4937ms: 256kb, Overlapped | Sequential
4984ms: 64kb, NoBuffering | Overlapped
Worse 5:
14953ms: 64kb, NoBuffering | Overlapped | Sequential
8875ms: 256kb, Sequential
8219ms: 64kb, Sequential
6329ms: 64kb, NoBuffering
6328ms: 64kb, NoBuffering | Sequential
Top 5:
4687ms: 256kb, NoBuffering | Overlapped
4703ms: 128kb, Overlapped
4719ms: 128kb, Overlapped | Sequential
4734ms: 64kb, Overlapped | Sequential
4735ms: 128kb, NoBuffering | Overlapped | Sequential
Worse 5:
6313ms: 64kb, NoBuffering
5844ms: 64kb, NoBuffering | Sequential
5672ms: 128kb, NoBuffering
5672ms: 256kb, NoBuffering | Sequential
5656ms: 128kb, NoBuffering | Sequential
write_test.exe
Windows XP, Hitachi HDS721616PLA380Top 5:
4140ms: 256kb, Overlapped | Sequential | WriteThrough
4156ms: 256kb, Overlapped | WriteThrough
4422ms: 256kb, Sequential
4438ms: 256kb, Default
4578ms: 128kb, Sequential
Worse 5:
11438ms: 128kb, WriteThrough
7140ms: 64kb, Sequential | WriteThrough
6687ms: 64kb, WriteThrough
5562ms: 128kb, Overlapped | WriteThrough
5500ms: 64kb, Overlapped | WriteThrough
Top 5:
4109ms: 256kb, Overlapped | Sequential | WriteThrough
4250ms: 256kb, Sequential
4344ms: 256kb, Default
4360ms: 128kb, Sequential
4469ms: 128kb, Default
Worse 5:
7375ms: 64kb, Sequential | WriteThrough
6703ms: 64kb, WriteThrough
5625ms: 128kb, WriteThrough
5609ms: 256kb, Overlapped | WriteThrough
5313ms: 128kb, Sequential | WriteThrough
← →
DevilDevil © (2013-02-18 15:29) [126]read_test.exe
Windows 7, ST3250410AS ATA DeviceTop 5:
3938ms: 128kb, Overlapped | Sequential
3953ms: 128kb, Overlapped
3953ms: 64kb, Overlapped
3953ms: 256kb, NoBuffering | Overlapped
3954ms: 128kb, NoBuffering | Overlapped
Worse 5:
5438ms: 64kb, NoBuffering
4813ms: 64kb, NoBuffering | Sequential
4781ms: 128kb, NoBuffering
4766ms: 256kb, NoBuffering | Sequential
4750ms: 256kb, NoBuffering
write_test.exe
Windows 7, ST3250410AS ATA DeviceTop 5:
3734ms: 256kb, Overlapped | WriteThrough
3765ms: 64kb, Overlapped | WriteThrough
3828ms: 128kb, Overlapped | Sequential | WriteThrough
3907ms: 64kb, Overlapped | Sequential | WriteThrough
4046ms: 256kb, Overlapped | Sequential | WriteThrough
Worse 5:
10469ms: 64kb, Sequential | WriteThrough
9172ms: 256kb, WriteThrough
6140ms: 64kb, WriteThrough
5937ms: 128kb, Sequential | WriteThrough
5859ms: 256kb, Overlapped
← →
Rouse_ © (2013-02-18 16:12) [127]
> DevilDevil © (18.02.13 15:29) [126]
> read_test.exe
> Windows 7, ST3250410AS ATA Device
Это ты я как понял с моей рабочей данные показал.
На тебе с домашней.
Диск: ST3500320AS ATA Device (тоже барракуда 7200.11)
Ось в обоих случаях семерка 32 бита с 2Гб памяти на борту.
ReadStarting:
1) 64kb, NoBuffering... 15007ms
2) 64kb, Default... 6209ms
3) 64kb, NoBuffering | Overlapped... 6802ms
4) 64kb, Overlapped... 4212ms
5) 64kb, NoBuffering | Sequential... 8502ms
6) 64kb, Sequential... 4212ms
7) 64kb, NoBuffering | Overlapped | Sequential... 4025ms
8) 64kb, Overlapped | Sequential... 3931ms
9) 128kb, NoBuffering... 5195ms
10) 128kb, Default... 4290ms
11) 128kb, NoBuffering | Overlapped... 3915ms
12) 128kb, Overlapped... 3729ms
13) 128kb, NoBuffering | Sequential... 4945ms
14) 128kb, Sequential... 3994ms
15) 128kb, NoBuffering | Overlapped | Sequential... 3775ms
16) 128kb, Overlapped | Sequential... 3728ms
17) 256kb, NoBuffering... 4821ms
18) 256kb, Default... 4305ms
19) 256kb, NoBuffering | Overlapped... 3744ms
20) 256kb, Overlapped... 3791ms
21) 256kb, NoBuffering | Sequential... 5819ms
22) 256kb, Sequential... 4072ms
23) 256kb, NoBuffering | Overlapped | Sequential... 3806ms
24) 256kb, Overlapped | Sequential... 3978ms
Top 5:
3728ms: 128kb, Overlapped | Sequential
3729ms: 128kb, Overlapped
3744ms: 256kb, NoBuffering | Overlapped
3775ms: 128kb, NoBuffering | Overlapped | Sequential
3791ms: 256kb, Overlapped
Worse 5:
15007ms: 64kb, NoBuffering
8502ms: 64kb, NoBuffering | Sequential
6802ms: 64kb, NoBuffering | Overlapped
6209ms: 64kb, Default
5819ms: 256kb, NoBuffering | Sequential
writeStarting:
1) 64kb, Default... 5210ms
2) 64kb, Overlapped... 5211ms
3) 64kb, Sequential... 5320ms
4) 64kb, Overlapped | Sequential... 5210ms
5) 64kb, WriteThrough... 6349ms
6) 64kb, Overlapped | WriteThrough... 3962ms
7) 64kb, Sequential | WriteThrough... 6193ms
8) 64kb, Overlapped | Sequential | WriteThrough... 3978ms
9) 128kb, Default... 5211ms
10) 128kb, Overlapped... 5195ms
11) 128kb, Sequential... 5039ms
12) 128kb, Overlapped | Sequential... 5117ms
13) 128kb, WriteThrough... 5304ms
14) 128kb, Overlapped | WriteThrough... 3573ms
15) 128kb, Sequential | WriteThrough... 5210ms
16) 128kb, Overlapped | Sequential | WriteThrough... 3681ms
17) 256kb, Default... 5133ms
18) 256kb, Overlapped... 5367ms
19) 256kb, Sequential... 5210ms
20) 256kb, Overlapped | Sequential... 4945ms
21) 256kb, WriteThrough... 5070ms
22) 256kb, Overlapped | WriteThrough... 3853ms
23) 256kb, Sequential | WriteThrough... 5086ms
24) 256kb, Overlapped | Sequential | WriteThrough... 3588ms
Top 5:
3573ms: 128kb, Overlapped | WriteThrough
3588ms: 256kb, Overlapped | Sequential | WriteThrough
3681ms: 128kb, Overlapped | Sequential | WriteThrough
3853ms: 256kb, Overlapped | WriteThrough
3962ms: 64kb, Overlapped | WriteThrough
Worse 5:
6349ms: 64kb, WriteThrough
6193ms: 64kb, Sequential | WriteThrough
5367ms: 256kb, Overlapped
5320ms: 64kb, Sequential
5304ms: 128kb, WriteThrough
← →
Rouse_ © (2013-02-18 16:17) [128]Кстати тесты плывут.
В качестве примера опять запустил тест на чтение, показатели вообще не те:Starting:
1) 64kb, NoBuffering... 5117ms
2) 64kb, Default... 5023ms
3) 64kb, NoBuffering | Overlapped... 4196ms
4) 64kb, Overlapped... 4181ms
5) 64kb, NoBuffering | Sequential... 6630ms
6) 64kb, Sequential... 3978ms
7) 64kb, NoBuffering | Overlapped | Sequential... 3713ms
8) 64kb, Overlapped | Sequential... 3822ms
9) 128kb, NoBuffering... 4945ms
10) 128kb, Default... 4243ms
11) 128kb, NoBuffering | Overlapped... 3697ms
12) 128kb, Overlapped... 3698ms
13) 128kb, NoBuffering | Sequential... 4882ms
14) 128kb, Sequential... 3963ms
15) 128kb, NoBuffering | Overlapped | Sequential... 3853ms
16) 128kb, Overlapped | Sequential... 3760ms
17) 256kb, NoBuffering... 4914ms
18) 256kb, Default... 4227ms
19) 256kb, NoBuffering | Overlapped... 3682ms
20) 256kb, Overlapped... 3744ms
21) 256kb, NoBuffering | Sequential... 4836ms
22) 256kb, Sequential... 3947ms
23) 256kb, NoBuffering | Overlapped | Sequential... 3697ms
24) 256kb, Overlapped | Sequential... 3713ms
Top 5:
3682ms: 256kb, NoBuffering | Overlapped
3697ms: 128kb, NoBuffering | Overlapped
3697ms: 256kb, NoBuffering | Overlapped | Sequential
3698ms: 128kb, Overlapped
3713ms: 64kb, NoBuffering | Overlapped | Sequential
Worse 5:
6630ms: 64kb, NoBuffering | Sequential
5117ms: 64kb, NoBuffering
5023ms: 64kb, Default
4945ms: 128kb, NoBuffering
4914ms: 256kb, NoBuffering
← →
Sapersky (2013-02-18 17:58) [129]У меня тоже результаты на запись в 1.5 раза отличались - потом заметил, что забыл выключить торренты. Или может памяти под кэш не хватает. Или процессор загружен (новый тест, похоже, упирается в процессор).
Сейчас проверил чтение, болтанка результатов в пределах 200 мс.
Windows 7, ST3500418AS (другая машина)
Starting:
1) 64kb, NoBuffering... 4407ms
2) 64kb, Default... 4265ms
3) 64kb, NoBuffering | Overlapped... 3735ms
4) 64kb, Overlapped... 3640ms
5) 64kb, NoBuffering | Sequential... 4610ms
6) 64kb, Sequential... 3859ms
7) 64kb, NoBuffering | Overlapped | Sequential... 3641ms
8) 64kb, Overlapped | Sequential... 3656ms
9) 128kb, NoBuffering... 4328ms
10) 128kb, Default... 4109ms
11) 128kb, NoBuffering | Overlapped... 3641ms
12) 128kb, Overlapped... 3656ms
13) 128kb, NoBuffering | Sequential... 4532ms
14) 128kb, Sequential... 3843ms
15) 128kb, NoBuffering | Overlapped | Sequential... 3610ms
16) 128kb, Overlapped | Sequential... 3703ms
17) 256kb, NoBuffering... 4297ms
18) 256kb, Default... 4156ms
19) 256kb, NoBuffering | Overlapped... 3719ms
20) 256kb, Overlapped... 3640ms
21) 256kb, NoBuffering | Sequential... 4547ms
22) 256kb, Sequential... 3875ms
23) 256kb, NoBuffering | Overlapped | Sequential... 3610ms
24) 256kb, Overlapped | Sequential... 3656ms
Top 5:
3610ms: 128kb, NoBuffering | Overlapped | Sequential
3610ms: 256kb, NoBuffering | Overlapped | Sequential
3640ms: 256kb, Overlapped
3640ms: 64kb, Overlapped
3641ms: 128kb, NoBuffering | Overlapped
Worse 5:
4610ms: 64kb, NoBuffering | Sequential
4547ms: 256kb, NoBuffering | Sequential
4532ms: 128kb, NoBuffering | Sequential
4407ms: 64kb, NoBuffering
4328ms: 128kb, NoBuffering
Starting:
1) 64kb, NoBuffering... 4359ms
2) 64kb, Default... 4328ms
3) 64kb, NoBuffering | Overlapped... 3656ms
4) 64kb, Overlapped... 3625ms
5) 64kb, NoBuffering | Sequential... 4641ms
6) 64kb, Sequential... 3859ms
7) 64kb, NoBuffering | Overlapped | Sequential... 3657ms
8) 64kb, Overlapped | Sequential... 3656ms
9) 128kb, NoBuffering... 4406ms
10) 128kb, Default... 4281ms
11) 128kb, NoBuffering | Overlapped... 3719ms
12) 128kb, Overlapped... 3656ms
13) 128kb, NoBuffering | Sequential... 4657ms
14) 128kb, Sequential... 3953ms
15) 128kb, NoBuffering | Overlapped | Sequential... 3609ms
16) 128kb, Overlapped | Sequential... 3656ms
17) 256kb, NoBuffering... 4297ms
18) 256kb, Default... 4250ms
19) 256kb, NoBuffering | Overlapped... 3656ms
20) 256kb, Overlapped... 3641ms
21) 256kb, NoBuffering | Sequential... 4625ms
22) 256kb, Sequential... 3875ms
23) 256kb, NoBuffering | Overlapped | Sequential... 3625ms
24) 256kb, Overlapped | Sequential... 3656ms
Top 5:
3609ms: 128kb, NoBuffering | Overlapped | Sequential
3625ms: 64kb, Overlapped
3625ms: 256kb, NoBuffering | Overlapped | Sequential
3641ms: 256kb, Overlapped
3656ms: 64kb, NoBuffering | Overlapped
Top 5:
3609ms: 128kb, NoBuffering | Overlapped | Sequential
3625ms: 64kb, NoBuffering | Overlapped | Sequential
3640ms: 256kb, NoBuffering | Overlapped | Sequential
3641ms: 64kb, Overlapped | Sequential
3641ms: 128kb, Overlapped
Top 5:
3656ms: 128kb, Overlapped | Sequential
3657ms: 128kb, NoBuffering | Overlapped | Sequential
3657ms: 256kb, NoBuffering | Overlapped | Sequential
3672ms: 128kb, NoBuffering | Overlapped
3672ms: 256kb, NoBuffering | Overlapped
← →
DevilDevil © (2013-02-18 18:18) [130]Я и сам вижу, что цифры плывут
но тем не менее нужно проследить закономерность, какие размеры буфера и опций использовать оптимально
если есть идеи по минимизации "заплывов" - милости прошу озвучить
← →
DevilDevil © (2013-02-18 18:19) [131]а лучше корректируйте тест (он с исходниками) - и выкладывайте
← →
Inovet © (2013-02-18 18:59) [132]На ноутбуке
read_test.exe
Windows 7, unknown drive model Сигейт 5400 320ГБ
Top 5:
1185ms: 64kb, Overlapped | Sequential
1185ms: 128kb, Default
1185ms: 128kb, Sequential
1201ms: 64kb, Default
1201ms: 128kb, Overlapped | Sequential
Worse 5:
2075ms: 64kb, NoBuffering
1622ms: 64kb, NoBuffering | Sequential
1436ms: 128kb, NoBuffering
1404ms: 128kb, NoBuffering | Sequential
1404ms: 256kb, NoBuffering
write_test.exe
Windows 7, unknown drive model
Top 5:
4384ms: 256kb, Overlapped | WriteThrough
4430ms: 256kb, Overlapped | Sequential | WriteThrough
4743ms: 64kb, Overlapped | Sequential | WriteThrough
4930ms: 64kb, Overlapped | WriteThrough
5319ms: 256kb, Sequential | WriteThrough
Worse 5:
12340ms: 128kb, NoBuffering
11201ms: 64kb, NoBuffering
10343ms: 64kb, NoBuffering | Sequential
9485ms: 64kb, NoBuffering | Sequential | WriteThrough
9453ms: 64kb, Default
← →
Inovet © (2013-02-18 19:57) [133]Ещё с одного компьютера
read_test.exe
Windows 7, unknown drive model 7200 120ГБ
Top 5:
2199ms: 64kb, Sequential
2200ms: 64kb, Default
2200ms: 256kb, Default
2215ms: 128kb, Default
2215ms: 128kb, Overlapped
Worse 5:
2636ms: 64kb, NoBuffering
2449ms: 256kb, NoBuffering
2278ms: 128kb, NoBuffering | Sequential
2262ms: 256kb, NoBuffering | Overlapped
2262ms: 64kb, NoBuffering | Sequential
write_test.exe
Windows 7, unknown drive model
Top 5:
4992ms: 256kb, Overlapped | Sequential | WriteThrough
5055ms: 256kb, Overlapped | WriteThrough
5741ms: 128kb, Overlapped | WriteThrough
5834ms: 128kb, Overlapped | Sequential | WriteThrough
6832ms: 256kb, Overlapped
Worse 5:
10499ms: 64kb, NoBuffering | Sequential | WriteThrough
10218ms: 64kb, NoBuffering | Overlapped | Sequential | WriteThrough
10187ms: 64kb, NoBuffering | Overlapped | WriteThrough
10125ms: 64kb, NoBuffering | Overlapped
9968ms: 64kb, NoBuffering | WriteThrough
← →
DevilDevil © (2013-02-18 21:54) [134](hint: текущая ссылка http://zalil.ru/34271961)
All
У меня пока выводы такие. Что думаете ?
Чтение:
"новые винды" ( >= 7): Overlapped | Sequential
"старые винды": не могу понять "Overlapped | Sequential" или "NoBuffering | Overlapped | Sequential"
Запись:
Overlapped | Sequential | WriteThrough
← →
DevilDevil © (2013-02-18 21:55) [135]кто что думает ?
← →
Rouse_ © (2013-02-18 21:59) [136]Думаю, если не выпендриваться - 256 самое оно :)
Тест получился достаточно синтетический.
← →
DevilDevil © (2013-02-18 22:23) [137]> Тест получился достаточно синтетический.
что в твоём понимании "несинтетический тест" ?
по моему очень приближённо к реальным условиям ?
← →
DevilDevil © (2013-02-18 22:24) [138]один знак вопроса лишний )
← →
Sapersky (2013-02-19 08:39) [139]Судя по первому тесту, на чтении можно просто Sequential. При последовательном чтении Sequential в любом случае не повредит, где не так - погрешность измерения, вероятно. Влияет ли Sequential на запись - из документации не понял, обычно пишут только про чтение.
Про запись: ну да, Overlapped | Sequential | WriteThrough. Но до меня сейчас дошло, что в реальном приложении никто не заставляет делать Flush после записи файла. В этом случае банальное "без флажков" (кэшированная запись) запишет не быстрее, но вернёт управление раньше. При условии, что приложение не пишет много и постоянно, как редактор видео, и кэш не переполняется.
Я помню, что сброс кэшей это моя идея, но меня больше чтение интересовало (которое таки да, часто бывает некэшированное). С записью - уже и сам не знаю. Конечно, несколько обидно возвращаться к тому, что тестировали в самом начале. Ну можно и WriteThrough оставить, тоже хороший вариант, особенно если начнёшь подряд писать несколько Гб.
← →
Труп Васи Доброго © (2013-02-19 09:58) [140]Лови, коли надо. Винт Hitachi HDT721025SLA380
read_test.exe
We test different buffer sizes and options to read/parse files most fast
Testing file is "correct_file.txt" (about 100Mb)
Total sum of numbers must be equal 0x2904E86C0
Windows XP, unknown drive model
Starting:
1) 64kb, NoBuffering... 4875ms
2) 64kb, Default... 5891ms
3) 64kb, NoBuffering | Overlapped... 3640ms
4) 64kb, Overlapped... 4297ms
5) 64kb, NoBuffering | Sequential... 4515ms
6) 64kb, Sequential... 3875ms
7) 64kb, NoBuffering | Overlapped | Sequential... 3672ms
8) 64kb, Overlapped | Sequential... 3703ms
9) 128kb, NoBuffering... 4329ms
10) 128kb, Default... 4281ms
11) 128kb, NoBuffering | Overlapped... 3562ms
12) 128kb, Overlapped... 3657ms
13) 128kb, NoBuffering | Sequential... 4281ms
14) 128kb, Sequential... 3812ms
15) 128kb, NoBuffering | Overlapped | Sequential... 3672ms
16) 128kb, Overlapped | Sequential... 3578ms
17) 256kb, NoBuffering... 4235ms
18) 256kb, Default... 4328ms
19) 256kb, NoBuffering | Overlapped... 3594ms
20) 256kb, Overlapped... 3562ms
21) 256kb, NoBuffering | Sequential... 4328ms
22) 256kb, Sequential... 3766ms
23) 256kb, NoBuffering | Overlapped | Sequential... 3656ms
24) 256kb, Overlapped | Sequential... 3547ms
Top 5:
3547ms: 256kb, Overlapped | Sequential
3562ms: 256kb, Overlapped
3562ms: 128kb, NoBuffering | Overlapped
3578ms: 128kb, Overlapped | Sequential
3594ms: 256kb, NoBuffering | Overlapped
Worse 5:
5891ms: 64kb, Default
4875ms: 64kb, NoBuffering
4515ms: 64kb, NoBuffering | Sequential
4329ms: 128kb, NoBuffering
4328ms: 256kb, Default
__________________________________________________
write_test.exe
We test different buffer sizes and options to write files most fast
Destination file must be same as "correct_file.txt" (about 100Mb)
Windows XP, unknown drive model
Starting:
1) 64kb, Default... 3781ms
2) 64kb, Overlapped... 5578ms
3) 64kb, Sequential... 3640ms
4) 64kb, Overlapped | Sequential... 4704ms
5) 64kb, WriteThrough... 5531ms
6) 64kb, Overlapped | WriteThrough... 4937ms
7) 64kb, Sequential | WriteThrough... 5688ms
8) 64kb, Overlapped | Sequential | WriteThrough... 4297ms
9) 128kb, Default... 3515ms
10) 128kb, Overlapped... 4782ms
11) 128kb, Sequential... 3625ms
12) 128kb, Overlapped | Sequential... 4453ms
13) 128kb, WriteThrough... 4766ms
14) 128kb, Overlapped | WriteThrough... 3891ms
15) 128kb, Sequential | WriteThrough... 4828ms
16) 128kb, Overlapped | Sequential | WriteThrough... 5031ms
17) 256kb, Default... 3609ms
18) 256kb, Overlapped... 4766ms
19) 256kb, Sequential... 3437ms
20) 256kb, Overlapped | Sequential... 4516ms
21) 256kb, WriteThrough... 3891ms
22) 256kb, Overlapped | WriteThrough... 3453ms
23) 256kb, Sequential | WriteThrough... 4375ms
24) 256kb, Overlapped | Sequential | WriteThrough... 3688ms
Top 5:
3437ms: 256kb, Sequential
3453ms: 256kb, Overlapped | WriteThrough
3515ms: 128kb, Default
3609ms: 256kb, Default
3625ms: 128kb, Sequential
Worse 5:
5688ms: 64kb, Sequential | WriteThrough
5578ms: 64kb, Overlapped
5531ms: 64kb, WriteThrough
5031ms: 128kb, Overlapped | Sequential | WriteThrough
4937ms: 64kb, Overlapped | WriteThrough
← →
DevilDevil © (2013-02-19 10:35) [141]> Труп Васи Доброго ©
спасиб
> Sapersky (19.02.13 08:39) [139]
> Про запись: ну да, Overlapped | Sequential | WriteThrough.
> Но до меня сейчас дошло, что в реальном приложении никто
> не заставляет делать Flush после записи файла. В этом случае
> банальное "без флажков" (кэшированная запись) запишет не
> быстрее, но вернёт управление раньше. При условии, что приложение
> не пишет много и постоянно, как редактор видео, и кэш не
> переполняется.
Так а "Overlapped | Sequential | WriteThrough" это и есть кешированная запись
или нет ?
> Судя по первому тесту, на чтении можно просто Sequential.
> При последовательном чтении Sequential в любом случае не
> повредит, где не так - погрешность измерения, вероятно.
> Влияет ли Sequential на запись - из документации не понял,
> обычно пишут только про чтение.
это да...
но что лучше: "Sequential", "Overlapped | Sequential" или "NoBuffering | Overlapped | Sequential" ?
и самое важное :)
какой размер буфера брать ?
← →
Sapersky (2013-02-19 20:07) [142]Так а "Overlapped | Sequential | WriteThrough" это и есть кешированная запись
Скорее некэшированная. Там что-то странное, как я понял, пишется сразу, но при этом кэшируется (на случай чтения):
http://support.microsoft.com/kb/99794/en-us
Поэтому и быстрее - диск сразу начинает писаться, параллельно (за счёт Overlapped) с твоим кодом; а без флагов сначала забивается кэш, потом ты пинаешь Flush, виндовс говорит "ах, да" и только тогда пишет файл.
Но если тебе пофиг, когда оно на самом деле запишется - то быстрее второй метод без Flush.
но что лучше: "Sequential", "Overlapped | Sequential" или "NoBuffering | Overlapped | Sequential" ?
Я ж говорю, по первому тесту чтения (из [97]) - просто Sequential, без всего. Но если ты второй считаешь более правильным (с большой нагрузкой на CPU) - тогда + Overlapped. Хотя мне кажется странным тестировать HDD, упираясь в CPU...
какой размер буфера брать ?
По результатам сложно сказать, на первые места постоянно вылезает разное.
Ну можно взять 256, с учётом того, что большой буфер вряд ли повредит - в тестах кэшированной записи снижение скорости начиналось только с 32 мб.
Надо было, пожалуй, группировать очень близкие (разница не более чем на 5%, скажем) результаты тестов. И/или как-то автоматизированно обрабатывать статистику, на глаз уже тяжело, когда много данных.
В идеале прогонять одни и те же настройки несколько раз, сравнивать результаты, отбрасывать экстремальные значения - как там положено по науке обрабатывать результаты экспериментов.
← →
Rouse_ © (2013-02-19 21:24) [143]
> DevilDevil © (18.02.13 22:23) [137]
> что в твоём понимании "несинтетический тест" ?
Дим, я думаю что у правильного теста значения плыть не должны.
Как это сделать в твоем случае, к сожалению подсказать не могу, ибо свои параметры я тебе еще в аське озвучивал и они разительно отличаются от твоих цифр.
← →
Владислав © (2013-02-20 01:19) [144]
> Sapersky (19.02.13 20:07) [142]
В документации, конечно, разбросано все, но все же все написано. Наши волшебные тесты показывают, что ничего волшебного нет.
> Rouse_ © (19.02.13 21:24) [143]
>
> > DevilDevil © (18.02.13 22:23) [137]
> > что в твоём понимании "несинтетический тест" ?
>
> Дим, я думаю что у правильного теста значения плыть не должны.
>
Предлагаю удалить все программы, которые с диском общаются. Ну или установить много программ, которые активно работают с диском. :о)
> DevilDevil © (13.02.13 12:25) [2]
> > А зачем это все?
>
> для того чтобы сравнить различные способы записи в файл
Печалька. Скатились к тому, что тестируем размер буфера (который на скорость чтения/записи в разумных пределах практически не влияет). Пора переходить к написанию волшебной библиотеки.
← →
DevilDevil © (2013-02-20 17:30) [145]> Rouse_ © (19.02.13 21:24) [143]
> Дим, я думаю что у правильного теста значения плыть не должны.
>
> Как это сделать в твоем случае, к сожалению подсказать не
> могу, ибо свои параметры я тебе еще в аське озвучивал и
> они разительно отличаются от твоих цифр.
Саш :)
Лично я ничего странного не вижу в том, что результаты "плывут". Windows - многозадачная ОС, да ещё и частенько работает с несколькими ядрами, несколькими дисками. Задача - выявить оптимальные параметры. Тесты специально таким образом делаются - чтобы подзагрузить ЦПУ при чтении, и не очень загружать при записи.
Когда я представляю потоковое чтение файла, я представляю например большой текстовый файл, в котором нужно определить начала и длины строк, выделить для них место в куче, скопировать. Или например большой XML. Нужно не только читать данные из файла, но и на лету осуществлять его распарсивание. Выделяя опять таки данные в куче, копируя туда память, проводя различные инициализации. Ну или например какую-нибудь базу ;), в которой уложены разные идентификаторы, которые тоже нужно читать и укладывать в кучу.
А вот при потоковом чтении мне представляется другая картина. Если мы пишем текстовый файл - то все строки у нас уже есть. Пиши только данные строки да #13#10. Если мы сохраняем XML, то мы уже видим иерархию тегов - и пишем текст, иногда приводя строковые значения к строкам-xml. Если мы пишем базу - ещё проще. Все данные уже есть - пишем сразу данные.
В обоих случаях достаточно слабое звено - работа с файловой системой. Я лишь хочу понять, какое сочетание флагов и размера буфера действительно оптимально. Для этого тесты и проводятся
Я представил один способ тестирования. Но это не значит, что я прав. Я вообще себе никогда не доверяю тестирование. Я сторона-разработчик, мне хочется чтобы опций и условий было мало, чтобы реализовать было просто.
Говорят в споре рождается истина. Но слово "спор" я считаю плохим. Давай прибегнем к другой пословице. "Одна голова хорошо - а две лучше". Или в данном случае сразу 10.
Поэтому выкладывайте свои тесты, с удовольствием протестирую. Если сделаешь такие что не плывут - будет замечательно. Или почти не плывут
← →
DevilDevil © (2013-02-20 17:33) [146]> Владислав © (20.02.13 01:19) [144]
> Печалька. Скатились к тому, что тестируем размер буфера
> (который на скорость чтения/записи в разумных пределах практически
> не влияет). Пора переходить к написанию волшебной библиотеки.
В самом начале ветки был представлен тест записи стандартным способом, и буферизированным. Если бы разницы не было - я бы этот размер и набор опций не искал. Как мы видим, разница есть и в 2 и в 3 раза. А если писать вообще стандартным образом через TFileStream - получается опа
Поэтому лучше присоединяйся.
← →
DevilDevil © (2013-02-20 17:36) [147]> Sapersky (19.02.13 20:07) [142]
я думаю мож запиндюрить одни и те же тесты по 3 раза
наверное будет лучше видна картина по "топам"
← →
Игорь Шевченко © (2013-02-20 19:30) [148]DevilDevil © (20.02.13 17:30) [145]
> В обоих случаях достаточно слабое звено - работа с файловой
> системой
работу с файловой системой прекрасно показывают утилиты от SysInternals,
в частности, они показывают причину:
> А если писать вообще стандартным образом через TFileStream
> - получается опа
← →
DevilDevil © (2013-02-20 22:31) [149]> Игорь Шевченко © (20.02.13 19:30) [148]
ты кстати куда то пропал из общего тестирования и обсуждения
← →
Игорь Шевченко © (2013-02-20 23:22) [150]DevilDevil © (20.02.13 22:31) [149]
А я уже все сказал. В [57] и [72]
← →
DevilDevil © (2013-02-20 23:37) [151]> А я уже все сказал. В [57] и [72]
нууу... скучно
во-первых, ты не учитываешь разные опции, которые мы тут рассматриваем
во-вторых, ты игнорируешь многочисленные тесты, в которых явно видно, что отличия по производительности есть. Иногда даже в разы
Заметь, среди топов практически нет вариантов Default (т.е. без особых опций)
В конечном счёте задача одна - какие опции и размер буфера использовать в универсальной библиотеке для потокового чтения/записи. Чтобы раз выставить и уже не париться. Если считаешь, что размер буфера и опции должны зависеть от параметров, задаваемых пользователем - ok, какие это параметры и как они влияют на опции CreateFile(...)
← →
Игорь Шевченко © (2013-02-20 23:58) [152]DevilDevil © (20.02.13 23:37) [151]
> во-вторых, ты игнорируешь многочисленные тесты, в которых
> явно видно, что отличия по производительности есть. Иногда
> даже в разы
В моих тестах тоже есть отличия по производительности. Это и не тесты даже, а иллюстрации. И выводов ровно три:
1. Разумная буферизация улучшает быстродействие совокупности операций ввода-вывода.
2. Использование системного кэша улучшает быстродействие.
3. Серебряной пули нет
> во-первых, ты не учитываешь разные опции, которые мы тут
> рассматриваем
Если бы существовала волшебная комбинация, Microsoft давно бы ее выставила везде, где только можно, чтобы любые вызовы пользователя сводились именно к ней.
Теперь по сабжу:
Хочется тестировать быстродействие диска - надо тестировать без файловой системы. Диск устройство медленное, на перемещение механизма чтения/записи или на работу контроллера памяти в SSD (я деталей не знаю) требуется время. Если файл фрагментирован, на доступ к нему потребуется гарантировано больше времени при прочих равных, поэтому нельзя сказать, что в этом запуске сыграл нужный размер буфера, потому что время изменилось, возможно, для доступа к файлу потребовалось больше (или меньше) работы устройства хранения.
Но быстродействие диска без файловой системы тестировать смысла не имеет, потому что пользователь будет работать с файловой системой, с кэшем Windows и т.д.
Некоторые СУБД таки работают с данными без файловой системы. На каком-то этапе развития это давало прирост производительности при прочих равных, сейчас вроде разница сгладилась.
Могу еще раз порекомендовать утилиты SysInternals - она показывают опции вызова CreateFile, размер порций ввода-вывода, запускай приложения, которые ты полагаешь, работают быстро и смотри, за счет каких опций.
← →
DevilDevil © (2013-02-21 10:47) [153]> Игорь Шевченко © (20.02.13 23:58) [152]
В конечном счёте задача одна - какие опции и размер буфера использовать в универсальной библиотеке для потокового чтения/записи. Чтобы раз выставить и уже не париться. Если считаешь, что размер буфера и опции должны зависеть от параметров, задаваемых пользователем - ok, какие это параметры и как они влияют на опции CreateFile(...)
← →
Jeer © (2013-02-21 15:33) [154]Удалено модератором
← →
DevilDevil © (2013-03-04 17:29) [155]Качать здесь: http://zalil.ru/34316287
Новая идея заключается в том, чтобы все тесты прогнать несколько раз. Сейчас 4. Тогда несмотря на гуляния результатов, общая картина будет чётче
Intel i3-2120 3,30G Hz
Windows 7, WDC WD5000AAKX-001CA0
read_test.exeTop 10:
2480ms: 256kb, Overlapped
2480ms: 256kb, Overlapped
2481ms: 128kb, Overlapped | Sequential
2481ms: 256kb, Overlapped | Sequential
2496ms: 256kb, Overlapped
2496ms: 64kb, Overlapped
2496ms: 128kb, NoBuffering | Overlapped
2496ms: 128kb, Overlapped
2496ms: 256kb, Overlapped | Sequential
2511ms: 128kb, NoBuffering | Overlapped
write_test.exeTop 10:
2402ms: 128kb, Overlapped | WriteThrough
2402ms: 128kb, Overlapped | WriteThrough
2434ms: 256kb, Overlapped | Sequential | WriteThrough
2481ms: 64kb, Overlapped | WriteThrough
2511ms: 128kb, Overlapped | Sequential | WriteThrough
2512ms: 64kb, Overlapped | WriteThrough
2527ms: 64kb, Overlapped | WriteThrough
2527ms: 128kb, Overlapped | WriteThrough
2605ms: 128kb, Overlapped | Sequential | WriteThrough
2605ms: 64kb, Overlapped | WriteThrough
← →
Jeer © (2013-03-04 17:35) [156]Удалено модератором
← →
DevilDevil © (2013-03-04 18:16) [157]Intel(R) Corel(TM) Duo CPU 2.2 ГГц
Windows XP, Hitachi HDS721616PLA380
read_test.exeTop 10:
4734ms: 256kb, NoBuffering | Overlapped | Sequential
4734ms: 256kb, NoBuffering | Overlapped
4750ms: 64kb, Overlapped | Sequential
4750ms: 128kb, NoBuffering | Overlapped | Sequential
4750ms: 256kb, NoBuffering | Overlapped | Sequential
4765ms: 256kb, NoBuffering | Overlapped | Sequential
4765ms: 128kb, Overlapped | Sequential
4766ms: 128kb, Overlapped | Sequential
4766ms: 256kb, Overlapped | Sequential
4766ms: 128kb, NoBuffering | Overlapped
write_test.exeTop 10:
4078ms: 256kb, Overlapped | WriteThrough
4094ms: 256kb, Overlapped | WriteThrough
4094ms: 256kb, Overlapped | Sequential | WriteThrough
4094ms: 256kb, Overlapped | Sequential | WriteThrough
4109ms: 256kb, Overlapped | Sequential | WriteThrough
4250ms: 128kb, Overlapped | WriteThrough
4266ms: 128kb, Overlapped | Sequential | WriteThrough
4297ms: 256kb, Sequential
4297ms: 128kb, Overlapped | Sequential | WriteThrough
4297ms: 256kb, Sequential
← →
Inovet © (2013-03-04 18:22) [158]> [155] DevilDevil © (04.03.13 17:29)
> несмотря на гуляния результатов
Результаты в разы различаются, в зависимости куда там пишется/читается. Для повышения точности измерения именно влияния буфера на скорость нужен чистый физический диск или хотя бы раздел, чтобы ничего кроме теста с ним не работало, чтобы в системе ничего больше не работало, чтобы при каждом прогоне она была в первоначальном состоянии, а лучше чтобы она вообще не была запущена, да, именно так. Шутка. Хотя бы отдельный диск.
← →
DevilDevil © (2013-03-04 20:41) [159]> Inovet © (04.03.13 18:22) [158]
чтобы ты там не говорил
картина то вырисовывается ;)
давай свои цифры :)
← →
DevilDevil © (2013-03-04 21:24) [160]Athlon XP 1700
Windows XP, ST380011A
read_test.exeTop 10:
6730ms: 128kb, NoBuffering | Overlapped
6759ms: 128kb, NoBuffering | Overlapped | Sequential
6800ms: 256kb, NoBuffering | Overlapped | Sequential
6820ms: 128kb, NoBuffering | Overlapped | Sequential
6839ms: 128kb, NoBuffering | Overlapped
6850ms: 64kb, NoBuffering | Overlapped | Sequential
6850ms: 128kb, NoBuffering | Overlapped | Sequential
6880ms: 256kb, NoBuffering | Overlapped
6880ms: 128kb, NoBuffering | Overlapped
6880ms: 256kb, NoBuffering | Overlapped
write_test.exeTop 10:
4156ms: 256kb, Overlapped | Sequential | WriteThrough
4467ms: 128kb, Overlapped | WriteThrough
4476ms: 128kb, Overlapped | WriteThrough
4486ms: 128kb, Overlapped | Sequential | WriteThrough
4507ms: 128kb, Overlapped | Sequential | WriteThrough
4517ms: 128kb, Overlapped | WriteThrough
4536ms: 128kb, Overlapped | WriteThrough
4557ms: 128kb, Overlapped | Sequential | WriteThrough
4597ms: 256kb, Overlapped | WriteThrough
4647ms: 64kb, Default
Страницы: 1 2 3 4 5 вся ветка
Форум: "Прочее";
Текущий архив: 2013.07.28;
Скачать: [xml.tar.bz2];
Память: 0.88 MB
Время: 0.013 c