The OpenNET Project / Index page

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

Новая версия высокопроизводительного шаблонизатора CTPP

15.01.2009 22:19

Вышла очередная версия шаблонизатора CTPP (2.4) - высокопроизводительного аналога хорошо известных библиотек Template Toolkit, HTML::Template, HTML::Template::Pro. Отличается высокой скоростью работы (в 2 - 3 раза быстрее HTML::Templte::JIT, в 25 - 30 раз быстрее Template Toolkit), расширяемостью функционала и удобством работы. В новой версии введены операторы Библиотека отлично документирована, есть инструкции по установке, примеры и учебники для Perl, PHP и С++. CTPP написан на С++. Поддерживаются операционные системы Linux, FreeBSD и Solaris на архитектурах i386, amd64, sparc и ultra sparc. Имеет интерфейсы для языков Perl, PHP и Python. Лицензия - модифицированная BSD.

  1. Главная ссылка к новости (http://ctpp.havoc.ru/...)
  2. OpenNews: Доступен высокопроизводительный шаблонизатор CTPP2
Автор новости: Грачев Михаил
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/19809-CTPP
Ключевые слова: CTPP, template, web
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Pilat (ok), 22:43, 15/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как замена HTML::Template может и пройдёт. Но Template-Toolkit точно заменяет? Что-то по описанию слабовато.
     
  • 1.2, Аноним (-), 23:28, 15/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    до ТТ и близко не дотягивает. после ТТ вообще ни на что смотреть не хочется. и не сказал бы что из-за TT у меня что-то тормозило.
     
     
  • 2.4, Дмитрий (??), 00:02, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >до ТТ и близко не дотягивает. после ТТ вообще ни на что
    >смотреть не хочется. и не сказал бы что из-за TT у
    >меня что-то тормозило.

    Абсолютно поддерживаю!! Интересно как они c TT сравнивали небось в CGI каждый раз создавая обьект

     
     
  • 3.10, parad (??), 12:21, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Шитухин - ЦГИ? Бл###, не знаешь о чем говоришь - не тявкай! Этот шаблонизатор (на равне с CAS - C++ Application Server) разрабатывался Шитухиным для майл.ру, использовался в жж/суп фабрик, и актифно юзается в высоконагруженных веб проектах многими крцпными компаниями. Знал бы что стоило его уговорить полностью открыть его проекты для людей, - не п##дил бы напрасно!!!
     
     
  • 4.12, xepacim (?), 12:43, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    AFAIK, в жж/суп фабрик афтар был единственным кто это юзал. и последним. и неплохо бы примеры *крупных* компаний, где это реально юзается. а то что-то не верится, чесслово.
     
     
  • 5.14, parad (??), 12:54, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    компании палить не буду т.к. сам им это дело и прикручивал.
    насчет афтара - не он один...
     
     
  • 6.35, xepacim (?), 21:10, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ссылок нет - слиф защитан.
    специально поинтересовался: суп не юзает *это* - не знаете, не гоните. а знаете - сцылки в студию
     

  • 1.3, js (?), 23:58, 15/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще одна попытка написать PHP.
     
  • 1.5, Аноним (5), 01:17, 16/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А мне гораздо больше нравится чем TT. По фичам все умеет, по скорости реально сильно лучше.
     
     
  • 2.7, Alexey (??), 11:04, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Уже год использую, очень быстрый всем нравится.
    когда время ответа сервера около 20 миллисекунд, шаблонизатор оказывает существенное влияние на общее время.
     
  • 2.8, Аноним (-), 11:31, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А мне гораздо больше нравится чем TT. По фичам все умеет, по
    >скорости реально сильно лучше.

    по скорости-то оно лучше, а по удобству? можно, скажем, хэндлер запроса передать внутрь шаблона, чтоб не фетчить сначала все записи и не передавать массив?

     
     
  • 3.19, Аноним (-), 17:51, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    интереса ради сравнил производительность ctpp и TT: при обработке миллиона шаблонов (простых) ctpp быстрее в 4 раза -- если шаблон текстовый и в 8 раз -- если шаблон откомпилирован. ну пусть в 10, но не в 25-30! :)
     
     
  • 4.22, user (??), 19:23, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >интереса ради сравнил производительность ctpp и TT: при обработке миллиона шаблонов (простых)
    >ctpp быстрее в 4 раза -- если шаблон текстовый и в
    >8 раз -- если шаблон откомпилирован. ну пусть в 10, но
    >не в 25-30! :)

    Как сравнивали? На чем? Какие конструкции использовали?

     
     
  • 5.32, Аноним (-), 11:07, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    сравнивал http://ctpp.havoc.ru/helloworld_perl.html с аналогичным на ТТ, по результатам time.
     
  • 5.33, Аноним (-), 15:56, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>интереса ради сравнил производительность ctpp и TT: при обработке миллиона шаблонов (простых)
    >>ctpp быстрее в 4 раза -- если шаблон текстовый и в
    >>8 раз -- если шаблон откомпилирован. ну пусть в 10, но
    >>не в 25-30! :)
    >
    >Как сравнивали? На чем? Какие конструкции использовали?

    а на примере http://ctpp.havoc.ru/newslist_perl.html ctpp быстрее TT в 2 раза с нескомпилированным шаблоном и в 7 со скомпилилированным.

    freebsd 7.0, perl 5.8.7, CTPP2 v2.3.1, HTML-CTPP2-2.3.11, TT 2.14

     

  • 1.9, xepacim (?), 11:47, 16/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а вот навскидку перлы из кода:
    1. Индусский свичь src/CTPP2BitIndex.cpp:132
    2. Мега fault-tolerant код src/StaticData:110
    3. Аццкий кастинг (вы таково не видели!) src/VMFileLoader.cpp:101
    4. Еще fault-tolerant'нее чем п.2 src/VMFileLoader.cpp:168
       malloc() конечно всегда сработает, ога. fread() тем более.
    5. Индусский иф src/VMSTDLib.cpp:101
    6. Спагетти-свичь на 1213 строк src/VM.cpp:175

    не-не-не. как-нибудь обойдемся.

    зы: курите код иногда, прежде чем юзать.

     
     
  • 2.11, parad (??), 12:35, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а вот навскидку перлы из кода:
    >1. Индусский свичь src/CTPP2BitIndex.cpp:132

    не нашел о чем ты...

    >2. Мега fault-tolerant код src/StaticData:110

    это некритичная точка - тут можно.

    >3. Аццкий кастинг (вы таково не видели!) src/VMFileLoader.cpp:101

    это фишка, ля, а не баг!

    >4. Еще fault-tolerant'нее чем п.2 src/VMFileLoader.cpp:168
    >   malloc() конечно всегда сработает, ога. fread() тем более.

    в догонку к 2 - то-же самое.

    >5. Индусский иф src/VMSTDLib.cpp:101
    >6. Спагетти-свичь на 1213 строк src/VM.cpp:175

    как бы тебе объяснить что делает компилятор со свичем... про бинарные деревья слышал?

    в общем - молчал бы лучше!!!

     
     
  • 3.13, xepacim (?), 12:53, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ну если комуто нравится индусский код-стайл, я ж разве против? юзайте пожалста.
    и этож только мое скромное мнение, что код индусский. комуто мож и нравится.
    некоторым вообще вот кажется что malloc() в прогах на це++ да еще в таком количестве - моветон. наверное все они лохи. а про бинарные деревья.. погугли про computed goto. и про spaghetti-code.
    зы: не обижайтесь. не обижаться надо, а фиксить баги, ога
     
     
  • 4.15, parad (??), 12:59, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ХЗ, есть же пишушие на бейсике и смотрящие на всех с высока!
    сам из цпп довольствуюсь классами, стл и шаблонами - остальное по-старинке, хоть тем-же маллоком...
     
  • 2.16, И (?), 15:45, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    по поводу свича   - каким образом вы бы переписали код?
    //Не разработчик данного проекта, просто интересно.
     
     
  • 3.17, xepacim (?), 16:05, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    1. это большое исследование типа как с этим борются люди.
    http://www.jilp.org/vol5/v5paper12.pdf
    2. можно содержимое кейсов то в методы поубирать (это про спагетти). хрен то конечно один, но читается/понимается проще.
    зы: это все имхо, конечно
     
     
  • 4.20, И (?), 18:33, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Содержимое кейзов в отдельные методы??
    вы именно об этом кейзе, на который сослались,  говорите?

        switch(iBitPos)

        {

            case 0:

                return iResult & 0x01;

    ...

            case 6:
                return iResult & 0x40;
            case 7:
                return iResult & 0x80;
        }


     
     
  • 5.24, xepacim (?), 20:27, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    конечно нет, про спагетти из VM.cpp. ссылка на статью тоже про него.
    а этот мелкий свитч вообще пример из книги "магия битов для блондинок"

     
  • 2.23, user (??), 19:32, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а вот навскидку перлы из кода:
    >1. Индусский свичь src/CTPP2BitIndex.cpp:132

    Самый нормальный свич. Оптимизатором раскладывается в GOTO таблицу. Учите матчасть, как строятся современные компиляторы.

    >2. Мега fault-tolerant код src/StaticData:110

    Нет смысла там проверять, сколько и чего выделяется.

    >3. Аццкий кастинг (вы таково не видели!) src/VMFileLoader.cpp:101

    Нормальная проверка на big/little endian и совместимость типа double ieee 754 на разных платформах.

    >4. Еще fault-tolerant'нее чем п.2 src/VMFileLoader.cpp:168
    >   malloc() конечно всегда сработает, ога. fread() тем более.

    Напишите автору bugreport.

    >5. Индусский иф src/VMSTDLib.cpp:101

    Ну, можно сделать через массив, но зачем оно?

    >6. Спагетти-свичь на 1213 строк src/VM.cpp:175

    Обычный такой switch. Не нравится? Придумайте, как переписать более лаконично.

     
     
  • 3.25, xepacim (?), 20:39, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Самый нормальный свич. Оптимизатором раскладывается в GOTO таблицу. Учите матчасть, как строятся
    >современные компиляторы.

    это не так. вернее не совсем так. могу и пруф-линк поискать.

    >Нет смысла там проверять, сколько и чего выделяется.

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

    >Напишите автору bugreport.

    тут согласен

    >Ну, можно сделать через массив, но зачем оно?

    ну если это массив хэшей, то получаем +читаемость, +перфоманц, -хардкод

    >Обычный такой switch. Не нравится? Придумайте, как переписать более лаконично.

    дело не в лаконичности, а в читаемости. лечится рефакторингом. а про перфоманц
    тут: https://www.opennet.ru/openforum/vsluhforumID3/48111.html#17
    кстати, как раз интерпретаторы байт-кода виртуальных машин. имхо, познавательное чтиво


     
     
  • 4.27, parad (ok), 23:18, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по вечно всплющамся от темя линкам - ты теоретик и никак толком доказать кроме как линком на другого теоретика не можешь... В общем глубоко твои доводы и линки с терминами и индусскими стилями. Чтоб поверить в то что тебе пытаются объаснить и до чего-то дойти - поставь дизассемблер и выкини из башки всю ту лажу, которую ты где-то умудрился подцепить!
     
     
  • 5.29, xepacim (?), 23:45, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Судя по вечно всплющамся от темя линкам - ты теоретик и никак
    >толком доказать кроме как линком на другого теоретика не можешь...

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

     

  • 1.18, Аноним (18), 16:32, 16/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а есть ли cgi mvc c++ framework ?
    сколько ищу, так ничего не нашел (
     
     
  • 2.21, user (??), 19:21, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а есть ли cgi mvc c++ framework ?
    >сколько ищу, так ничего не нашел (

    Есть: CAS. http://cas.havoc.ru/download/

     
     
  • 3.26, Аноним (-), 20:52, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    не впечатлило ((
    вопрос открыт! ((
     
     
  • 4.28, parad (ok), 23:21, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >не впечатлило ((

    интересно узнать что?


     
     
  • 5.30, Аноним (-), 01:28, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    да все! (
    перепробовал кучу существующих lib для написания на с++, пока ничего толкового не нашел! (
    cas знаю с версии 3.1.7.
    хочется нормальный mvc c++ framework, типа zend framework, но для c++!
     
     
  • 6.31, parad (ok), 08:13, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    когда человек на вопрос "что именно" говорит "да все" - это значит он явно п из дит!
    вы вообще его поднимали? или может расскажите что именно не устроило?
     
     
  • 7.36, xepacim (?), 21:26, 17/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >вы вообще его поднимали? или может расскажите что именно не устроило?

    ничего, что я скажу?
    специально скачал это.
    имхо, праздник хардкода, копипаста и большинства изученных антипаттернов.
    просто грепнуть слово goto - и все, диагноз ясен - пожизненный газенваген с гвоздями.
    зы: может, конечно, это экстремизм.. мяхче говоря, не знаю за какие бабки я п стал это юзать

     
     
  • 8.37, Аноним (-), 00:48, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    1 не хотел отвечать этому пеньку, но ты изложил мои мысли на 100 ... текст свёрнут, показать
     
     
  • 9.38, parad (ok), 09:27, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    все еще не п из ди это не твои слова и ты его даже не ставил ... текст свёрнут, показать
     
  • 8.39, parad (ok), 09:58, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    грепни ядра линуха и фри на готу, а либц еще и на лонгджампы, - потом говори, чт... текст свёрнут, показать
     
     
  • 9.41, xepacim (?), 12:16, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    не надо адвокатить кривые руки - их выпрямлять надо ядро на сях писано - другой... текст свёрнут, показать
     
     
  • 10.43, parad (ok), 15:06, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    немного ниже ты написал про культуру кода, тут ты пишешь про разные языки и прие... текст свёрнут, показать
     
  • 8.40, User294 (ok), 11:06, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Самое смешное что компилер все-равно странслирует все ваши выкрутасы в JMP-ы, ск... текст свёрнут, показать
     
     
  • 9.42, xepacim (?), 12:22, 18/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    еслиб там проблема была только с goto, еще б ничего там куда хуже все куда ко... текст свёрнут, показать
     

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



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

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