Для чего это все проделывалось:
Первоночально была цель протестировать Sablotron и libxslt - два разных XSLT Engine для PHP,
но потом было решено для полноты картины протестировать эти же механизмы и для Perl.
В результате тест затянулся не на 1 час :)
Т.к в официальном последнем релизе РНР (4.1.1) нет поддержки libxslt, то она была "насильно" перенесена из CVS.
Для тестов использовали: ApacheBench, Version 1.3c
Полный список используемого software и их версии XML/HTML
Как тестировали
Тестирование проводилось для mod_php+Sablotron mod_php+libxslt
mod_perl+Sablotron mod_perl+libxslt cgi perl+Sablotron cgi perl+libxslt
Были предприняты попытки протестировать AxKit, но все попытки заставить его работать не увенчались успехом, Apache просто падал с Segmentation при работе AxKit.
4 цикла (запросов/конкурирующих) 1000/10 2000/25 3000/50 5000/100
Все это повторялось для каждого xml файла (для netonfo_big использовались только 1000/10 и 2000/25)
Некоторые подробности:
Свап файл(swap-file) был отключен.
Apache и его модули (mod_perl,mod_php) были скомпилированы с подержкой DSO.
Перед каждым тестом apache загружался только с теми модулями, которые были нужны
для этого теста. Для cgi вообше никакие модули (mod_perl, mod_php) не загружались.
MySQL, который обычно работает на этом сервере, так же был на время тестов остановлен.
Еще был протестирован mod_xslt который базируется на Sablotron. Результаты его почти (он быстее на 5%) не отличаются от php+Sablotron по этому детальные тесты не проводились.
Server Hardware:
Server OS:
Client OS:
XML/XSLT файлы:
PHP/Perl файлы:
Впомогательные файлы, которые применялись при тестировании:
Выводы:
Пару слов о ZendAccelerator
Это коммерческий продукт компании Zend,
который хранит в shared-memory "скомпилированные" версии PHP скриптов,
. В свою очередь это дает существенный выигрыш в скорости, при условии, если время работы скрипта не
большое, и большая часть идет на его компилирование. Это обычно справедливо для
больших проектов, поэтому я не стал проводить тесты с отключенным ZendAccelerator
, т.к его влияние здесь не значительно, да и mod_perl уже в себе содержит подобный механизн.
Что касается коммерческой стороны этого продукта, то уже есть некоторое количество freeware аналогов:
Благодарности :)
Дмитрию Лебедеву (ака DJ_Rabbit) за файлы предоставленные для тестов (dj_r[1-3]) http://detail.phpclub.net/
Артёму Неганову (aka Ix) за файлы предоставленные для тестов (ix_*)
Slach за то что натолкнул на мысль посмотреть в сторону xml/xslt
Жене Юле и собаке просто за то что они есть