Текущий архив: 2005.08.14;
Скачать: CL | DM;
Вниз
Обратить байт - соревнование :) Найти похожие ветки
← →
Alx2 © (2005-07-25 10:52) [40]Sha © (25.07.05 10:11) [38]
>Кто ж им мерит? Им профилировать надо. А в попугаях я длиннее :)
Почему же нельзя мерить им?
Погонял твой тест на своей машине (тоже P4).
Есть довольно сильная неустойчиовсть (например, Default2 скачет от 8 тиков до 16). Потом, аргумент всегда равен 255. Несколько некорректно.
← →
Sha © (2005-07-25 11:09) [41]> Alx2 © (25.07.05 10:52) [40]
> Почему же нельзя мерить им?
Потому, что не для этого он.
> Погонял твой тест на своей машине (тоже P4).
> Есть довольно сильная неустойчиовсть (например, Default2
> скачет от 8 тиков до 16).
Так уж Intel переходы предсказывает :)
> Потом, аргумент всегда равен 255. Несколько некорректно.
Сделано специально. Этим я создаю тепличные условия для функций,
содержащих условные переходы.
Если хочешь, можешь заменитьFun(Prm);
наFun(i);
Это ни на что не влияет для самых быстрых функций, т.к. в них нет условных переходов, а результаты медленных только ухудшит.
← →
Sha © (2005-07-25 11:18) [42]Вот еще неплохая функция (на 8 тиков больше Dummy)
function ReverseBitsSha7(b: byte): byte;
asm
mov edx, eax //........76543210
and eax, $0055 //.........6.4.2.0
and edx, $00AA //........7.5.3.1.
add eax, eax //........6.4.2.0.
add eax, eax //.......6.4.2.0..
add eax, edx //.......67452301.
mov edx, eax
add eax, eax //......67452301..
and edx, $0198 //.......67..23...
and eax, $00CC //........45..01..
lea eax, [8*eax+edx] //.....45670123...
mov edx, eax
shr eax, 7 //............4567
add edx, edx //....45670123....
and edx, $00F0 //........0123....
add eax, edx //........01234567
end;
← →
Alx2 © (2005-07-25 11:56) [43]Sha © (25.07.05 11:18) [42]
>Так уж Intel переходы предсказывает :)
Тогда данные, полученные этим тестом не актуальны.
Что касается Intel® VTune™ Performance Analyzer: не понимаю почему нельзя использовать его данные по растактовке команд с учетом ветвлений, коллизий и прочая, если уж таковые он предоставляет как на основании реальных прогонов программы, так и на основе статического анализа? (правда последний, скорее, несет академический интерес). К тому же результаты его анализа много устойчивее.
PS
Вот последние результаты (VTune. Способ тестирования описан в [36]):
Size Function Clockticks Samples
4 Dummy 80
12 ReverseBitsSha0 109
29 ReverseBitsSha2 157
41 SwapBitsAlx2 171
30 ReverseBitsSha5 175
42 nikkie_tbl 187
28 BitSwapPierre 195
27 ReverseBitsSha3 195
53 ReverseBitsSha1 196
45 ReverseBitsSha6 205
47 CombSwapAsm 214
51 ReverseBitsSha7 221
65 CombSwap 243
71 nikkie2 254
40 SwapBits_Verg 308
99 nikkie 313
43 Achtung 331
75 SwapBits2 365
31 ReverseBitsSha4 405
72 Default2 519
16 SwapBitsKerk 703
15 SwapBits_APP 713
20 GetBit 1273
29 SetBit 1983
44 ReverseBitsBtnClick 2049
86 Jack128 2193
34 ReverseBits 2245
32 Default 2948
34 GuAV 4908
Вот последние результаты (Sha):
000 Dummy
000 ReverseBitsSha0
008 Default2
008 nikkie_tbl
008 ReverseBitsSha2
008 ReverseBitsSha3
008 ReverseBitsSha5
008 ReverseBitsSha6
008 ReverseBitsSha7
012 BitSwapPierre
012 nikkie
012 nikkie2
012 SwapBitsAlx2
016 CombSwapAsm
016 ReverseBitsSha1
016 ReverseBitsSha4
020 CombSwap
020 SwapBits2
024 Achtung
040 SwapBits_Verg
076 SwapBits_APP
080 SwapBitsKerk
088 Default
148 ReverseBits
168 Guav
252 Jack128
Конкретные цифры, конечно, здесь мало говорят. Но в порядке следования ощутимая разница.
Чему доверять?
← →
Alx2 © (2005-07-25 11:57) [44]Сорри за неаккуратность в табличке
← →
Alx2 © (2005-07-25 12:03) [45]GetBit и SetBit - артефакт.
← →
Sha © (2005-07-25 12:33) [46]>>Так уж Intel переходы предсказывает :)
> Тогда данные, полученные этим тестом не актуальны.
Как раз актуальны, потому, что все как реальной программе.
> Что касается Intel® VTune™ Performance Analyzer: не понимаю
> почему нельзя использовать его данные по растактовке команд с
> учетом ветвлений, коллизий и прочая, если уж таковые он
> предоставляет как на основании реальных прогонов программы,
> так и на основе статического анализа?
Любые данные, полученные на основе реальных прогонов будут искажены измерителем. Нельзя измерить, не изменяя состояние железа. Причем размер искажений зависит как от "размера измерителя", так и от свойств программы, процессора и ОС.
VTune предназначен для поиска горячих мест в коде. С этим он успешно справляется.
Для пользователя же важно время от старта до финиша, а не таблица (одна или другая).
> К тому же результаты его анализа много устойчивее
В реальной программе, где цикл не такой короткий, ты получишь большую устойчивость. Но только в среднем. Слишком много составлящих (аппаратных и программных) влияют на каждый прогон.
Ты можешь и сам усреднить, вынося измерения из цикла, но это опять на даст тебе представления о поведении реальной программы в жизни, т.к. это будут средние результаты в данном тесте.
← →
Alx2 © (2005-07-25 13:15) [47]>Sha © (25.07.05 12:33) [46]
>но это опять на даст тебе представления о поведении реальной
>программы в жизни, т.к. это будут средние результаты в данном
>тесте.
Поведение в частных случаях - отдельный вопрос. И часто никому не интересный. Достаточно получить оценку, которая позволит уверенно сравнивать время выполнения. И если такая оценка получится - уверен, что устанешь конструировать спецусловия, одинаковые для обеих кодов, в которых она радикально изменится. Иначе фразы "быстрее" и "медленнее" не имеют вообще никакого смысла.
Вот мне и интересны такие статистически достоверные данные. От старта до финиша. С оценками разброса, достоверностью и прочее (на всякий случай: я ничего ни от кого не требую - тут уж мои проблемы, тем более необходимые знания имеются). Но позиционировать же как общий результат частные случаи "из реальной жизни" - нет смысла.
Попробую в ближайшее время все это посчитать. Надеюсь, результат будет согласовываться с анализом VTune (пока расцениваю VTune в своем арсенале как некоторый эталон измерительной системы :)
← →
Sha © (2005-07-25 13:20) [48]>Alx2 © (25.07.05 13:15) [47]
>пока расцениваю VTune в своем арсенале как некоторый эталон измерительной системы :)
Ключевое слово здесь - "пока" :)
← →
Alx2 © (2005-07-25 13:21) [49]Sha © (25.07.05 13:20) [48]
>Ключевое слово здесь - "пока" :)
Да. Ты меня очень заинтриговал. Хочу убедиться.
← →
Igorek © (2005-07-25 14:24) [50]ого сколько вариантов.. жаль тема не новая..
Страницы: 1 2 вся ветка
Текущий архив: 2005.08.14;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.054 c