Тестирование

Программа по обработке данных примеров на XML была получена путем суперкомпиляции интерпретатора XSLT А. Корлюкова (версия от 24 мая 2000) на суперкомпиляторе Scp4 от 17 апреля 2000. В качестве теста взяты такие XSLT и DTD. Результат компиляции этого XSLT с учетом DTD в Refal 5 - vt.ref, в Refal Plus - vt.rf. Преобразовывались 30 документов (собрание произведений Шекспира, 2.04 MB). Их имена перечислены в первой колонке таблицы.

Целью тестирования было сравнение времен преобразования XML-документа на Рефале-5 и Рефале Плюс. Ради этого программа была упрощена: не делается вывод результата преобразования в файл, он весь остается в памяти. В таком варианте Рефал Плюс обходит на чистом преобразовании Рефал-5 только 1.5-2 раза из-за конкатенаций, которых не было бы при выводе в файл. Чтобы минимизировать влияние конкатенаций, было сделано следующее изменение остаточной программы на Рефале Плюс: все e-переменные в правых частях за исключением аргументов вызовов функций заключены в скобки: e.i -> (e.i). Это не повлияло на работоспособность программы, так как она имеет частный вид -- нет композиций функций ("плоская"). В таком виде время данного преобразования XML-документов на Рефале Плюс оказалось меньшим, чем на Рефале-5, в 6-7 раз!

Измерение времени счета результирующей программы проводилось на двух реализациях Рефала: Refal 5 и Refal Plus - на последней в двух вариантах: без "дырок" и с "дырками" (lholes=100, rholes=50). Программа вводила XML-документ в память и представляла его в виде рефал-выражения (первая колонка) и делала его преобразование 40 раз (третья колонка). Для каждого XML-документа программа запускалась 10 раз. Во второй и четвертой колонках дана средняя ошибка замера (в Refal 5 встроены менее точные часы, поэтому времена приблизительные).

В колонках R5/R+ и R5/R+ 100/50 дано отношение времен работы программ на Refal 5 и Refal Plus.

Тестирования проводились под Linux-Mandrake 7.0 с выключенным swap-файлом на машине Pentium III 504Mhz, 256Mb (другие программы не были запущены).

XML file name Size (B) Time R5 (sec) Time R+ (sec) R5/R+ Time R+ 100/50 (sec) R5/R+ 100/50
a_and_c.xml 251 898 1.00 0.00 10.80 0.32 3.54 0.12 1.78 0.13 0.28 6.05 3.48 0.12 2.25 0.02 0.29 4.80
all_well.xml 209 730 1.00 0.00 8.70 0.42 2.69 0.15 1.42 0.00 0.37 6.11 2.88 0.08 1.80 0.12 0.35 4.84
as_you.xml 192 140 0.80 0.32 8.20 0.32 2.43 0.15 1.30 0.05 0.33 6.30 2.50 0.12 1.67 0.12 0.32 4.90
com_err.xml 136 841 0.40 0.48 5.80 0.32 1.76 0.01 0.93 0.10 0.23 6.23 1.79 0.15 1.05 0.10 0.22 5.53
coriolan.xml 260 100 1.10 0.18 11.10 0.18 3.48 0.03 1.76 0.01 0.32 6.29 3.49 0.07 2.27 0.12 0.32 4.89
cymbelin.xml 247 365 1.10 0.18 10.50 0.50 3.25 0.06 1.62 0.07 0.34 6.50 3.21 0.13 2.05 0.03 0.34 5.13
dream.xml 145 040 0.60 0.48 6.10 0.18 1.81 0.16 0.99 0.15 0.33 6.16 2.03 0.20 1.05 0.20 0.29 5.81
hamlet.xml 279 663 1.50 0.50 12.00 0.00 3.68 0.11 1.83 0.07 0.41 6.58 3.77 0.04 2.40 0.12 0.40 4.99
hen_iv_1.xml 214 973 0.90 0.18 9.10 0.18 2.66 0.31 1.32 0.23 0.34 6.91 2.79 0.09 1.70 0.09 0.32 5.35
hen_v.xml 226 266 1.00 0.00 9.60 0.48 2.73 0.13 1.45 0.10 0.37 6.61 2.92 0.30 1.59 0.23 0.34 6.04
hen_vi_1.xml 196 460 0.80 0.32 8.10 0.18 2.35 0.14 1.26 0.08 0.34 6.45 2.49 0.01 1.51 0.00 0.32 5.35
hen_vi_2.xml 226 008 1.00 0.00 9.50 0.50 3.01 0.26 1.28 0.28 0.33 7.43 2.89 0.01 1.80 0.06 0.35 5.28
j_caesar.xml 183 536 0.80 0.32 7.80 0.32 2.39 0.22 1.23 0.11 0.33 6.34 2.59 0.14 1.55 0.16 0.31 5.02
lear.xml 245 849 1.00 0.00 10.40 0.48 3.28 0.03 1.68 0.00 0.30 6.18 3.31 0.15 2.13 0.10 0.30 4.88
lll.xml 206 945 1.00 0.00 8.80 0.32 2.76 0.07 1.57 0.23 0.36 5.62 2.81 0.07 1.88 0.14 0.36 4.68
m_wives.xml 207 174 0.90 0.18 8.50 0.50 2.68 0.19 1.45 0.18 0.34 5.87 2.76 0.07 1.80 0.10 0.33 4.71
macbeth.xml 163 077 0.60 0.48 6.90 0.18 2.16 0.05 1.11 0.00 0.28 6.22 2.17 0.12 1.47 0.15 0.28 4.69
merchant.xml 182 039 0.80 0.32 7.60 0.48 2.42 0.16 1.06 0.16 0.33 7.15 2.47 0.18 1.34 0.16 0.32 5.66
much_ado.xml 195 214 0.90 0.18 8.20 0.32 2.66 0.08 1.36 0.16 0.34 6.02 2.67 0.10 1.62 0.10 0.34 5.05
othello.xml 248 777 1.20 0.32 10.60 0.48 3.40 0.02 1.79 0.07 0.35 5.91 3.47 0.02 2.27 0.15 0.35 4.67
pericles.xml 169 289 1.00 0.00 7.00 0.00 2.28 0.11 1.10 0.12 0.44 6.33 2.12 0.22 1.43 0.05 0.47 4.90
rich_ii.xml 192 848 0.90 0.18 8.10 0.18 2.33 0.01 1.22 0.11 0.39 6.62 2.43 0.07 1.40 0.07 0.37 5.79
rich_iii.xml 271 414 1.00 0.00 11.70 0.42 3.43 0.26 1.75 0.18 0.29 6.68 3.42 0.18 2.22 0.05 0.29 5.27
t_night.xml 186 075 0.70 0.42 7.60 0.48 2.63 0.19 1.23 0.21 0.27 6.16 2.62 0.13 1.62 0.16 0.27 4.68
taming.xml 194 295 0.90 0.18 8.10 0.18 2.53 0.24 1.24 0.15 0.36 6.55 2.51 0.16 1.65 0.00 0.36 4.91
tempest.xml 154 645 0.80 0.32 6.90 0.18 2.14 0.11 1.02 0.14 0.37 6.74 2.13 0.18 1.33 0.19 0.38 5.19
timon.xml 177 463 0.30 0.42 7.70 0.42 2.28 0.19 1.21 0.02 0.13 6.36 2.44 0.02 1.53 0.00 0.12 5.02
titus.xml 180 543 1.00 0.00 7.30 0.42 2.08 0.23 1.13 0.07 0.48 6.44 2.24 0.05 1.50 0.17 0.45 4.88
two_gent.xml 164 619 0.80 0.32 7.00 0.00 2.13 0.28 1.16 0.09 0.38 6.02 2.44 0.25 1.45 0.31 0.33 4.83
win_tale.xml 217 135 1.00 0.00 9.20 0.32 2.78 0.06 1.43 0.00 0.36 6.44 2.81 0.08 1.83 0.08 0.36 5.03
On the average








0.34 6.38



0.33 5.09
Avarage deviations








0.04 0.28



0.04 0.29

Для сравнения привожу времена работы выше описанной программы на Refal Plus в Linux и в Windows NT на одной и той же машите.

XML file name Size (B) Time R+ Linux (sec) Time R+ NT (sec) R+ Linux/R+ NT
a_and_c.xml 251 898 3.54 0.12 1.78 0.13 3.35 0.37 1.60 0.30 1.06 1.12
all_well.xml 209 730 2.69 0.15 1.42 0.00 2.56 0.01 1.49 0.03 1.05 0.95
as_you.xml 192 140 2.43 0.15 1.30 0.05 2.38 0.19 1.20 0.17 1.02 1.08
com_err.xml 136 841 1.76 0.01 0.93 0.10 1.75 0.24 0.77 0.23 1.01 1.22
coriolan.xml 260 100 3.48 0.03 1.76 0.01 3.21 0.02 1.85 0.01 1.08 0.95
cymbelin.xml 247 365 3.25 0.06 1.62 0.07 2.97 0.01 1.73 0.06 1.10 0.93
dream.xml 145 040 1.81 0.16 0.99 0.15 1.72 0.00 0.97 0.00 1.05 1.02
hamlet.xml 279 663 3.68 0.11 1.83 0.07 3.40 0.01 1.93 0.01 1.08 0.95
hen_iv_1.xml 214 973 2.66 0.31 1.32 0.23 2.55 0.08 1.36 0.08 1.04 0.97
hen_v.xml 226 266 2.73 0.13 1.45 0.10 2.56 0.06 1.56 0.14 1.07 0.93
hen_vi_1.xml 196 460 2.35 0.14 1.26 0.08 2.26 0.01 1.27 0.03 1.04 0.99
hen_vi_2.xml 226 008 3.01 0.26 1.28 0.28 2.59 0.06 1.47 0.01 1.16 0.87
j_caesar.xml 183 536 2.39 0.22 1.23 0.11 2.28 0.03 1.43 0.20 1.05 0.86
lll.xml 206 945 2.76 0.07 1.57 0.23 2.93 0.17 1.77 0.03 0.94 0.89
m_wives.xml 207 174 2.68 0.19 1.45 0.18 2.63 0.17 1.33 0.17 1.02 1.09
macbeth.xml 163 077 2.16 0.05 1.11 0.00 2.01 0.00 1.15 0.00 1.07 0.97
merchant.xml 182 039 2.42 0.16 1.06 0.16 2.14 0.01 1.21 0.01 1.13 0.88
much_ado.xml 195 214 2.66 0.08 1.36 0.16 2.60 0.17 1.26 0.24 1.02 1.08
othello.xml 248 777 3.40 0.02 1.79 0.07 3.05 0.12 1.81 0.00 1.11 0.99
pericles.xml 169 289 2.28 0.11 1.10 0.12 2.14 0.11 1.05 0.14 1.07 1.05
rich_ii.xml 192 848 2.33 0.01 1.22 0.11 2.16 0.01 1.19 0.00 1.08 1.02
rich_iii.xml 271 414 3.43 0.26 1.75 0.18 3.21 0.00 1.81 0.00 1.07 0.97
t_night.xml 186 075 2.63 0.19 1.23 0.21 2.31 0.00 1.45 0.17 1.14 0.85
taming.xml 194 295 2.53 0.24 1.24 0.15 2.39 0.03 1.35 0.03 1.06 0.92
tempest.xml 154 645 2.14 0.11 1.02 0.14 2.07 0.26 0.93 0.26 1.03 1.10
timon.xml 177 463 2.28 0.19 1.21 0.02 2.20 0.00 1.26 0.00 1.04 0.96
titus.xml 180 543 2.08 0.23 1.13 0.07 2.14 0.14 1.00 0.23 0.97 1.14
two_gent.xml 164 619 2.13 0.28 1.16 0.09 1.94 0.23 1.20 0.00 1.10 0.97
win_tale.xml 217 135 2.78 0.06 1.43 0.00 2.67 0.11 1.55 0.26 1.04 0.92
On the average








1.06 0.99
Avarage deviations








0.03 0.07
Comments