Программа
по обработке данных примеров на
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 |