Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
14-1122293244
zamik
2005-07-25 16:07
2005.08.14
Жарко, душно, работать не хочется.


9-1114359194
Yegorchic
2005-04-24 20:13
2005.08.14
Как сделать 2D вид в GLScene?


3-1120459762
Garik81
2005-07-04 10:49
2005.08.14
Неправильная кодировка в DBF


14-1122005636
X9
2005-07-22 08:13
2005.08.14
Сеть на битом коаксиле


3-1120523457
LF
2005-07-05 04:30
2005.08.14
Игнорируется EOleException