Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.exe
Top 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.exe
Top 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 SP1213N


Top 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 SP1213N


Top 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 HDS721616PLA380


Top 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 HDS721616PLA380


Top 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 Device


Top 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 Device


Top 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Гб памяти на борту.

Read
Starting:
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


write

Starting:
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.exe
Top 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.exe
Top 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.exe
Top 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.exe
Top 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.exe
Top 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.exe
Top 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
2-1354073820
Abcdef123
2012-11-28 07:37
2013.07.28
Как объявить свойство с дополнительным параметром?


15-1362384811
Pit
2013-03-04 12:13
2013.07.28
В ProcessExplorer видно,что DLL загружена 2 раза


2-1354043911
adept
2012-11-27 23:18
2013.07.28
Операции с данными в ячейках StringGrid а


2-1354223407
Natashka90
2012-11-30 01:10
2013.07.28
SelectDirectory и поле ввода пути


15-1362523636
Хыхы
2013-03-06 02:47
2013.07.28
Какими горячими клавишами...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский