Сравнения, сравнения, сравнения...



Posted by Аркадий Водяник (195.206.226.14) on February 09, 2001 at 03:54:21:

In Reply to: Сравнительные оценки скоростей Ultra32 и сервера 3.18 posted by Анатолий Анимица on February 08, 2001 at 14:20:43:

Дорогой Анатолий Антонович!

Сегодня я нарушу неписаные правила корпоративной политики
и покритикую Вас - нашего руководителя отдела корпоративных
систем, и предложу свои тесты - ultraH-32 / ФБП:Сервер 3.18.

Для чего я это сделаю? Ведь ФБП есть ФБП - и мне должно быть
в общем-то все равно (или даже лестно:) при любом достойном
исходе тестирования. Но нет. Во первых, я хочу все же показать
более правильное, более сравнимое, что ли, сравнение, чтобы не
создавать представление (как это попытались сделать Вы), чтo
маленькая девочка, обученная карате (ultraH-32) может побить
даже небольшой танк (ФБП:Сервер). Она может его обогнать по
ровной тропинке, в то время как он преодолевает завалы деревьев,
но как только они окажутся на одной и той же дороге - легко
представить, чем это кончится... Итак.

Тест. Машина P233. RAM 64 Mb. Остальное малопоказательно -
это notebook.

Будут задействованы простейшие правила при 10001 операциях.
Операций null не будет вообще.

Дерево видов операций:


Деpево видов опеpаций
+--operation
¦ - X X PROG
L--erase
- X X ERASE

Файлы коэффициенты:

PROG:


for i=1 to 10
if i % 10 = 0
fact Q i, i+i, i*i
else
fact P i, i*i, i+i
endif
endfor

Операции с таким ф/к идут плотным рядом от 1 до 10000.

ERASE:


erase Q ??, ??, ??

Операция с таким ф/к единственная - 10001-я.


Для ultraH-32 с быстрыми фактами, без ta-фактов:
10001 оп / 26с = 384 оп./с. Профиль по командам
виртуальной машины:

Команда всего,мс pазы мкс/раз
-----------------------------------------------
fact 18944 100000 189.4
push var 806 600000 1.3
% 519 100000 5.2
= 308 100000 3.1
push double 219 420005 0.5
+ 210 100000 2.1
* 208 100000 2.1
cmp,goto 191 210000 0.9
inc,goto 104 100000 1.0
push string 89 100004 0.9
erase 76 1 75514.6
nop 51 100000 0.5
set var 15 10000 1.5
goto 9 10000 0.9
-----------------------------------------------


Для ultraH-32 без быстрых фактов, без ta-фактов:
10001 оп. / 10с = 1000 оп./с. Профиль по командам
виртуальной машины:

-----------------------------------------------
Команда всего,мс pазы мкс/pаз
fact 4354 100000 43.5
push var 899 600000 1.5
% 635 100000 6.3
push double 385 420005 0.9
= 297 100000 3.0
+ 220 100000 2.2
* 207 100000 2.1
cmp,goto 190 210000 0.9
erase 139 1 138624.4
inc,goto 110 100000 1.1
push string 96 100004 1.0
nop 43 100000 0.4
set var 16 10000 1.6
goto 10 10000 1.0
-----------------------------------------------

Предварительный комментарий: Включение быстрых
фактов замедляет ввод факта (с 43.5 до 189.4 мкс/раз)
и ускоряет erase каждого 10-го факта (с 138624 мкс
до 75514 мкс).

-----------------------------------------------
-----------------------------------------------
А теперь - ФБП:Сервер.

(Быстрые факты включены, ta-фактов нет)
Финансы без пpоблем:Пpофилеp сообщает:

За эти 9077 мс было пеpесчитано 10001 опеpаций.
Сpедняя скоpость пеpесчета состояния Сеpвеpа: 1102 оп/с.

Расходы вpемени на выполнение команд в файлах-коэффициентах:
----------------------------------------------------
Команда всего,мс pазы мкс/pаз абс% отн%
----------------------------------------------------
fact 6631 100000 66.3 73.1 79.9 #######################
push var 328 600000 0.5 3.6 4.0 #
% 264 100000 2.6 2.9 3.2
push double 208 410005 0.5 2.3 2.5
= 150 100000 1.5 1.7 1.8
push string 123 100004 1.2 1.4 1.5
+ 119 100000 1.2 1.3 1.4
.=0, goto 84 100000 0.8 0.9 1.0
a>., goto 67 110000 0.6 0.7 0.8
* 64 100000 0.6 0.7 0.8
erase 60 1 60000.0 0.7 0.7
inc a, goto 32 100000 0.3 0.4 0.4
nop 23 100000 0.2 0.3 0.3
a=r 21 10000 2.1 0.2 0.3
goto 5 10000 ~ ~ ~
-----------------------------------------------------


Финансы без пpоблем:Пpофилеp сообщает:

(Быстрые факты выключены, ta-фактов нет)
За эти 3340 мс было пеpесчитано 10001 опеpаций.
Сpедняя скоpость пеpесчета состояния Сеpвеpа: 2994 оп/с.

Расходы вpемени на выполнение команд в файлах-коэффициентах:
----------------------------------------------------
Команда всего,мс pазы мкс/pаз абс% отн%
----------------------------------------------------
fact 1152 100000 11.5 34.5 42.4 ############
push var 386 600000 0.6 11.6 14.2 ####
% 238 100000 2.4 7.1 8.8 ##
push double 178 410005 0.4 5.3 6.5 #
erase 123 1 123000.0 3.7 4.5 #
= 99 100000 1.0 3.0 3.6 #
+ 82 100000 0.8 2.5 3.0
* 79 100000 0.8 2.4 2.9
.=0, goto 72 100000 0.7 2.2 2.6
push string 59 100004 0.6 1.8 2.2
a>., goto 57 110000 0.5 1.7 2.1
inc a, goto 29 100000 0.3 0.9 1.1
nop 15 100000 0.2 0.4 0.6
a=r 6 10000 ~ ~ ~
goto 4 10000 ~ ~ ~
-----------------------------------------------------

Не буду больше утомлять большими таблицами;
Пойдут итоги и об'яснения:



ultraH-32 | ФБП:Сервер 3.18
-------------------------+----------------
Без Б/Ф: 1000 оп./с | 2994 оп./с
|
С Б/Ф: 384 оп./с | 1102 оп./с
|
время на 43.5 мкс | 11.5 мкс
fact без Б/Ф: |
|
время на 189.4 мкс | 66.3 мкс
fact с Б/Ф: |
|
время на 138624 мкс | 123000 мкс
erase без Б/Ф: |
|
время на 75514 мкс | 60000 мкс
erase с Б/Ф: |
|
время |
умножения (*): 2.1 мкс | 0.7 мкс
-------------------------+--------------
Используемый ТМТ Watcom C
компилятор: Pascal 10.5
3.21


Так что в Вашем примере танк завалы
преодолевал - первичные документы создавал/проверял,
а в моем примере, я его из этих завалов вывел:)

А вообще здесь просто соревнование компиляторов -
я показал как минимум трехкратное превосходство
по производительности кода, генерируемого Watcom C
над производительностью кода от TMT Pascal.



Пpишедшие ответы: