|
Сегодняшний информационный повод — открытие шаблонизатора Blitz Templates, который ранее ускользал от моего внимания. Из всех парсеров темплейтов, с которыми я имел дело, это первый, реализованный в виде модуля интерпретатора PHP. Как не сложно догадаться, это радикально-положительным образом сказывается на производительности системы, но вначале я бы хотел высказаться о другом его свойстве.
Как известно, задачей любого парсера темплейтов является полумифическое отделение кода (и данных) от оформления страниц. Я говорю полумифического, т.к. в действительности ни один развитый шаблонизатор не может похвастаться реализованной в полной мере такой возможностью. Когда требования к функциональности шаблонов возрастают, их синтаксис усложняется, постепенно перерастая в специализированный язык. Показательный пример тому — Smarty и многие другие распространенные движки темплейтов. Строго говоря, сам PHP можно отнести к категории очень навороченного генератора страниц.
В итоге, одним из основных критериев при выборе шаблонизатора становится не качество (или степень) отделения кода от оформления, а скорее читаемость этого кода — достаточно субъективная характеристика, которая сильно зависит не только от шаблонизатора, но и от стиля кодинга. Показательный пример: XSLT является одним из наиболее идеологически-грамотных шаблонизаторов, тем не менее он сейчас пользуется не самой большой популярностью. Одна из причин тому — очень навороченный синтаксис.
В контексте сказанного выше, мне понравилась идеология, заложенная в синтаксис Blitz. цитата из официального источника:
Blitz не поддерживает по принципиальным соображениям сложные выражения:
{{if(if($foo, 0, 1), ’bar’, ’foobar’)}}
Данный код работать не будет. Не надо превращать код в спагетти.
И это очень правильный подход. Гибкие возможности строить сложные синтаксические конструкции — не всегда хорошо. Часто это служит причиной возникновения настолько запутанного кода, что в него не то что сторонний разработкич побоится залезть, но и сам автор, через пару месяцев после написания, предпочтет полную переработку корректировке деталей.
Упрощение синтаксиса хорошо еще и потому, что у кода шаблонов есть своя специфика: зачастую в темплейтах осознанно не делают форматирования (чтобы не портить форматирование генерируемого HTML и/или не утяжелять его излишним количеством пробельных символов), кроме того в текстовых редакторах обычно нет синтаксической подсветки кода темплейтов, которая облегчила бы работу (исключения — XSLT и, опять же, PHP).
Возвращаясь к вопросу производительности: Blitz работает быстрее, чем шаблоны, собираемые из отдельных PHP файлов (include-ами), но, по понятным причинам, медленее сплошного PHP кода. Учитывая, что нежелание использовать темплейтов на базе PHP — одна из самых важных причин использования сторонних шаблонизаторов вообще, можно считать, что Blitz фактически является лидером по скорости среди других систем своего класса.
/2008/01/lebowski-bench-small.gif)
Отдельно стоит упомянуть процесс тестирования, точнее обстоятельный подход, с котором он выполнен и описан на сайте разработчика. Неоднократно видел, как производительность шаблонизаторов, фреймворков и CMS измеряют на примерах уровня сложности «Hello world», а потом кричат «Сенсация! PHP работает быстрее кода на C++!». Что касается Blitz — тесты проводились в условиях, близких к боевым, и полностью обоснованы.
Вывод: на Blitz стоит обратить пристальное внимание при проектировании высокопроизводительных CMS для сайтов, работающих на выделенных серверах. В тех случаях, когда серьезных требований к производительности нет, его использование, к сожалению, будет не всегда оправдано экономически (пользовательские модули PHP — вещь не для shared хостинга).
Ссылки по теме
Написать комментарий
|
# stels: (14 января, 2011 @ 00:22)
я тут попробовал поставить Blitz на Денвер. В ини прописал-extension = php_blitz.dll, в каталог ext длку поставил, перезагрузил а реакции никакой (( а реально уже много различных ресурсов пересмотрел и считаю что blitz это тот шаблонизатором что надо, и с хтмл действительно не надо делать макароны всякими смарти, тогда уже продуктивнее будет писать все вместе пхп и хтмл в перемешку)) сам пользовался Xtemplate (просто без затей и код нормально выглядит), но решил найти нечто более продуктивнее.