The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен высокопроизводительный шаблонизатор CTPP2

16.02.2008 21:08

Вышла полностью переработанная версия шаблонизатора CTPP, распространяемого под 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;


  1. Главная ссылка к новости (http://community.livejournal.c...)
  2. Как работает CTPP2?
  3. Документация: Шаблонизатор CT++. Версия 2
  4. FreeBSD: New port: textproc/ctpp2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/14269-ctpp
Ключевые слова: ctpp, template, gcc, cpp, perl, php, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (ok), 22:30, 16/02/2008 [ответить]  
  • +/
    > Шаблонизатор представляет ..... бизнес-логику от их представления.

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

     
  • 1.2, Peter (??), 08:30, 18/02/2008 [ответить]  
  • +/
    в своё время php задумывался как примерно то же самое :)
     
  • 1.3, Аноним (3), 11:12, 18/02/2008 [ответить]  
  • +/
    Сейчас идет достаточно сильная ориентация на использование ajax. Основная страница загружается один раз, дальше все решает JS и скрипты на стороне сервера. Есть ли смысл увеличивать производительность шаблонизаторов? А вот скорость работы JS машины поднять не повредило бы:)
     
     
  • 2.4, jumper (?), 11:30, 18/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Сейчас идет достаточно сильная ориентация на использование ajax. Основная страница загружается один
    >раз, дальше все решает JS и скрипты на стороне сервера. Есть
    >ли смысл увеличивать производительность шаблонизаторов? А вот скорость работы JS машины
    >поднять не повредило бы:)

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

     

  • 1.5, Кодер (?), 15:28, 19/02/2008 [ответить]  
  • +/
    В свое время пытался пользоваться ранними версиями. Говно редкостное. Да ещё куча не документированных ошибок. Вернулся на HTML::Template::Pro.

    >> TMPL_comment

    убило :)))


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

     
     
  • 2.6, bomber (?), 18:44, 19/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Дык, там же вроде как есть контактный email. Или убрали?
     

  • 1.7, anight (??), 17:36, 22/02/2008 [ответить]  
  • +/
    Код порадовал

    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!";

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру