URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 40228
[ Назад ]

Исходное сообщение
"OpenNews: Доступен высокопроизводительный шаблонизатор CTPP2"

Отправлено opennews , 16-Фев-08 22:30 
Вышла (http://community.livejournal.com/ru_highload/35798.html?styl...) полностью переработанная версия шаблонизатора CTPP (http://ctpp.havoc.ru/), распространяемого под BSD-подобной лицензией.  Шаблонизатор представляет собой инструмент, отделяющий процесс обработки данных (бизнес-логику) от их представления. Кредо проекта: достижение максимального быстродействия при минимальном необходимом функционале. CTPP успешно используется в ряде высоконагруженных проектов ведущих IT-компаний России и мира.


Библиотека написана на языке C++ и имеет интерфейс для языков C, C++, Perl5, PHP4 и PHP5. Имеется поддержка синтаксиса Smarty, HTML::Template или Text::Template.


На данный момент для скачивания доступна преальфа модуля для Python, общественно-доступная поддержка Perl и PHP планируется на следующей неделе.

В CTPP2 реализован основной функционал версии 1.8, но вторая ветка является совершенно новым продуктом, с новым API и новыми возможностями.


Нововведения:


-  компиляция шаблонов в байт-код
-  вызов функций из функций
-  новое API
-  виртуальная машина
-  универсальный тип данных CDT
-  Операторы TMPL_elsif, TMPL_comment


Сравнительные результаты измерения производительности CCTP2:


-  В 3 раза быстрее HTML::Template::JIT;
-  В 9 раз быстрее HTML::Template::Pro;
-  В 30 раз быстрее HTML::Template;
-  В 33 раза быстрее Template::Toolkit;

URL: http://community.livejournal.com/ru_highload/35798.html?styl...
Новость: http://www.opennet.me/opennews/art.shtml?num=14269


Содержание

Сообщения в этом обсуждении
"Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено pavlinux , 16-Фев-08 22:30 
> Шаблонизатор представляет ..... бизнес-логику от их представления.

Так сказать - Прорабов от строителей :)


"Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено Peter , 18-Фев-08 08:30 
в своё время php задумывался как примерно то же самое :)

"Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено Аноним , 18-Фев-08 11:12 
Сейчас идет достаточно сильная ориентация на использование ajax. Основная страница загружается один раз, дальше все решает JS и скрипты на стороне сервера. Есть ли смысл увеличивать производительность шаблонизаторов? А вот скорость работы JS машины поднять не повредило бы:)

"Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено jumper , 18-Фев-08 11:30 
>Сейчас идет достаточно сильная ориентация на использование ajax. Основная страница загружается один
>раз, дальше все решает JS и скрипты на стороне сервера. Есть
>ли смысл увеличивать производительность шаблонизаторов? А вот скорость работы JS машины
>поднять не повредило бы:)

AJAX - не "серебряная пуля" и только им дело не ограничивается. Тем более, что как раз на основе одного и того же набора серверной логики + шаблонизаторов можно гененировать одновременно как XML для AJAX-страниц, так и HTML. Так что шаблонизаторы рано еще списывать, AJAX - не замена им, а дополнение.


"OpenNews: Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено Кодер , 19-Фев-08 15:28 
В свое время пытался пользоваться ранними версиями. Говно редкостное. Да ещё куча не документированных ошибок. Вернулся на HTML::Template::Pro.

>> TMPL_comment

убило :)))


Люди, интересно, как на http://ctpp.havoc.ru/ "запостить ошибку"/"выразить благодарность"/"послать на член"?


"OpenNews: Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено bomber , 19-Фев-08 18:44 
Дык, там же вроде как есть контактный email. Или убрали?

"Доступен высокопроизводительный шаблонизатор CTPP2"
Отправлено anight , 22-Фев-08 17:36 
Код порадовал

anight@limac:~/Desktop/ctpp2-2.0.4/src> grep Ouch *.cpp
CTPP2Compiler.cpp:      if (pInstr == NULL) { throw "Ouch!"; }
CTPP2JSONParser.cpp:            if (sTMP == NULL) { throw CTPPParserSyntaxError("Ouch", szData.GetLine(), szData.GetLinePos()); }
CTPP2JSONParser.cpp:            if (sTMP == NULL) { throw CTPPParserSyntaxError("Ouch", szData.GetLine(), szData.GetLinePos()); }
CTPP2Parser.cpp:                        if (sTMP == NULL) { throw "Ouch!"; }
CTPP2Parser.cpp:                throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                        throw "Ouch!";
CTPP2Parser.cpp:                throw "Ouch!";