PHPNG

tony2001

TeaM PHPClub
Ну, знаете ли.. Есть некоторые задачи, для которых Си гораздо более оптимален, чем PHP.
Написание всяких консольных скриптов для обработки массы данных, например.
И там хоть обпишись, но Си может быть на порядки быстрее, чем PHP.
 

hell0w0rd

Продвинутый новичок
Вурдалак, тем не менее при всей своей глюченности Phalcon на порядки быстрее Symfony. Я вот, если честно, задолбался ждать в dev-режиме ответы от сервера, когда контейнер компилируется секунду-полторы. Тут часто упоминают скорость разработки - так вот библиотеки на зефире (а как результат, на си) работают в любом случае быстрее, чем на php. AmdY, а оптимизировать любой код можно, в любой момент, без разницы на каком языке он написан.
AmdY, а можно тесты, где smarty обгоняет twig?

PS А симфони очень многие проблемы в своем коде затыкают кешированием, как в случае с DIC
 

AmdY

Пью пиво
Команда форума
hell0w0rd, получается у тебя проблема с симфони, а не с php. у laravel нет проблемы с долгой генерацией кэшей, может проще его использовать, чем генерить сотый фреймворк на другом языке.

про смарти vs twig
http://habrahabr.ru/post/128083/
http://umumble.com/blogs/php/249/
и вот почему http://habrahabr.ru/post/128083/#comment_4287223 (хабр, как всегда лучший коммент без плюсов)
 

hell0w0rd

Продвинутый новичок
AmdY, очень мне нравятся такие тесты:)
PHP:
$start = microtime(true);
$template = $twig->loadTemplate('demo.tpl');
$template->render($data);
echo microtime(true)-$start;
По поводу комментария - смарти умеет адаптироваться под объект/массив/isFoo/hasFoo/getFoo?
 

fixxxer

К.О.
Партнер клуба
- потому что твиг - в отличие от smarty который тупо транслирует написанное в php-код, - гарантирует отсутствие fatal errors в шаблоне, и абстрагирует верстку от вопроса php-шных типов данных.
 

hell0w0rd

Продвинутый новичок
AmdY, https://github.com/nkt/smarty_vs_twig, запусти у себя, я убрал идиотский тест с наследованием, глубиной в 500 блоков. Если вдруг кто-то захочет, может добавить на 10-15, будет интересно посмотреть.
foreach оказался на порядок медленнее в твиге, однако туча преимуществ твига, таких как автоэкранирование (с возможностью на разных уровнях его включить/выключить), index* переменные внутри циклов, нормальная документация (я ничего толкового про экранирование в смарти так и не наглулил) уделывают смарти.
А если это так - лучше оптимизировать парочку "тормозящих" функций из ядра твига, чем ежедневно мучаться с бестолковым смарти.

гарантирует отсутствие fatal errors в шаблоне
Вот это кстати суперская фича, учитывая что шаблоны часто пишет верстальщик, у меня в проекте просто отвалилась часть страницы, вместо 500.
 

keltanas

marty cats
Я вот, если честно, задолбался ждать в dev-режиме ответы от сервера, когда контейнер компилируется секунду-полторы.
Давай посмотрим правде в глаза на компиляцию контейнера в Symfony? Сначала выполняется проход, который выполняет все экстеншены и собирает их конфиги в один. Далее идет еще N проходов, каждый из которых может добавлять в контейнер свои свистелки и перделки. Если в каком-то из экстеншенов или пассов находится гавнокод, который считает числа фибоначчи через базу данных, то будет тормозить и вся компиляция.
Так что стоит посмотреть, что у тебя в расширениях и проходах контейнера, а не гнать на сам контейнер.
 

keltanas

marty cats
index* переменные внутри циклов, нормальная документация
http://www.smarty.net/docs/en/language.function.foreach.tpl
(я ничего толкового про экранирование в смарти так и не наглулил) уделывают смарти.
http://www.smarty.net/docs/en/language.modifier.escape.tpl
http://www.smarty.net/docs/en/variable.escape.html.tpl

И, кстати, писать плагины для смарти гораздо проще (ибо это простые функции), чем для твига.

А вот наследование в твиге действительно гораздо более продвинутое.

Конечно, смарти - то еще гавницо. Но и с ним лучше, чем с нативным пыхапе в виде шаблонов.
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
keltanas, экранирование - не совсем точно выразился, про автоэкранирование ничего толкового нет. Есть только фильтр на все переменные шаблона.
И, кстати, писать плагины для смарти гораздо проще (ибо это простые функции), чем для твига.
оО а в твиге сложные? Их просто нужно оборачивать в new Twig_Filter и тд.

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