<ctpp/> главная .:. скачать .:. документация .:. faq .:. разработчикам  
o Главная
    Скачать!
    Установка

o Помощь
    Что такое CTPP?
    Как работает CTPP?
    Онлайн-документация
    FAQ

o В действии
    Проекты
    Первые шаги
    Как сделать?..
    Разработчикам

o В разработке
    Тесты производительности
    Расписание
    Разработчики

    Благодарности




Объекты тестирования

Для тестирования были выбраны шаблонизаторы, поддерживающие парадигму "pipeline":

Тестирование шаблонизаторов, работающих по принципу "callback", возможно, будут проведено позже.

Для тестирования скорости работы шаблонизаторов использовался модифицированный "Lebowski Bench", изначально разработанный Алексеем Рыбаком. Суть теста заключается в построении "типичной" веб-страницы: списка "раскрашенных" разделов сайта, новостей, вывод набора тегов. Во время тестов шаблонизаторов использовался общий набор данных и собственный шаблон, построенный таким образом, чтобы выводимый результат маскимально совпадал с образцовым HTML.

Методика тестирования включала в себя пять измерений, два крайних по скорости результата отбрасывались, а оставшиеся три - осреднялись.

Тестирование скорости работы арифметических выражений производилось на шаблоне, выводящем в цикле результат вычисления простой формулы.

Основные характеристики исследуемых шаблонизаторов сведены в две таблицы. Первая таблица описывает свойства шаблонизатора, вторая - свойства поддерживаемого шаблонизатором диалекта.

ШаблонизаторСвойства
Написан на Лицензия Платформа Компи­ляция шаблонов Пере­носимость скомпи­лированных шаблонов Кэши­рование шаблонов
Template Toolkit Perl XS, C Perl Artistic License, GPL Кросс­плат­фор­мен­ный Нет Нет Да
HTML::Template Perl Perl Artistic License Кросс­плат­фор­мен­ный Нет Нет Да
HTML::Template::Pro Perl XS, C Perl Artistic Licence Кросс­плат­фор­мен­ный Нет Нет Да
HTML::Template::Compiled Perl Perl Artistic License Кросс­плат­фор­мен­ный Нет Нет Да
HTML::Template::JIT Perl XS Perl Artistic License Un*x (Linux, FreeBSD, Solaris) Да Нет Да
HTML::CTPP2 Perl XS, C++ BSD Кросс­плат­фор­мен­ный Да Да Да

Свойства поддерживаемого диалекта
ШаблонизаторСвойства диалекта
Вставка других шаблонов Циклы Итера­торы Кон­текст­ные переменные Ветв­ления Условия в ветвлениях Име­но­ван­ные блоки Поль­зо­ва­те­льские функции
Template Toolkit Да Нет Да Да Да Да Да Да
HTML::Template Да Да Нет Да Да Нет Нет Нет
HTML::Template::Pro Да Да Нет Да Да Да Нет Нет
HTML::Template::Compiled Да Да Нет Да Да Да Нет Нет
HTML::Template::JIT Да Да Нет Да Да Нет Нет Нет
HTML::CTPP2 Да Да Да Да Да Да Да Да

Следует прокомментировать понятия "цикл" и "итератор". Оба оператора последовательно проходят по элементам массива, предоставляя доступ к из содержимому, однако в ряде случаев тот или иной оператор может оказаться предпочтительнее. В качестве примера можно привести случай, когда глобальные переменные используются внутри цикла:

Доступ через цикл:

Default: <TMPL_var msg_flags>
<TMPL_loop messages>
    <TMPL_var msg_flags>
</TMPL_loop>

Доступ посредством итератора:

Default: [% msg_flags %]
[% FOREACH iter IN messages %]
    [% UNLESS iter.msg_flags %][% msg_flags %][% ELSE %][% iter.msg_flags %][% END %]
[% END %]



Результаты тестирования

Результаты тестирования скорости генерации страницы получены на сервере с установленной операционной системой FreeBSD 7.1 i386, и собранным из портов Perl v5.8.8 и тестируемыми модулями.
ШаблонизаторСкорость работы, запросы в секунду
С контекстными
переменными
Без контекстных
переменных
Template Toolkit 628*
HTML::Template 796 1248
HTML::Template::Pro 4857 4942
HTML::Template::Compiled 6543 6550
HTML::Template::JIT 4411 7808
HTML::CTPP29519*
* контекстные переменные не отключались

Результаты тестирования скорости вычисления арифметического выражения.
ШаблонизаторСкорость работы, запросы в секунду
Template Toolkit 1880
HTML::Template::Pro 9425
HTML::Template::Compiled 18070
HTML::CTPP2 44371



Выводы

  1. Самым быстрым на данный момент шаблонизатором по всем проведенным тестам следует признать HTML::CTPP2.
  2. Самым медленным шаблонизатором является Template Toolkit.
  3. Скорость работы HTML::Template::JIT кардинальным образом зависит от использования контекстных переменных. В случае, когда контекстные переменные используются, производительность этого модуля падает драматическим образом оказываясь ниже HTML::Template::Compiled и сопоставимой с HTML::Template::Pro.
  4. Среди шаблонизаторов, поддерживающих арифметические и логические выражения сразу за безусловным лидером, HTML::CTPP2, второе место занимает HTML::Template::Compiled. Связано это, по всей видимости, с использованием прямого вызова Perl для вычисления значений. Несмотря на достаточно высокую скорость модуля HTML::Template::Compile, нельзя не отметить субъективную сложность его использования для подобных целей.


Код для тестов

Скачать


Copyright © 2003 - 2008 CTPP Dev Team.