PHP / шаблоны против эхо - PullRequest
       5

PHP / шаблоны против эхо

8 голосов
/ 17 ноября 2011

Я хотел бы знать, какой из них лучше для производительности:

1 - использовать шаблон smarty (или любой другой лучше)

<?php
$Smarty = new Smarty();
// set all the default variables and other config
$Smarty->assign('var1', 'hello');
$Smarty->assign('var2', 'world');
$Smarty->display('page.html');

2 - использовать этот код:

<?php
$var1 = 'hello';
$var2 = 'world';
echo "$var1 $var2";

3 - используйте этот код:

<?php
$var1 = 'hello';
$var2 = 'world';
echo $var1 . " " . $var2;

, основываясь на этих 3 примерах, я не могу придумать новый, который лучше всего использовать при производительности

noteКонечно, у меня больше переменных, чем в этом примере.

спасибо

Ответы [ 2 ]

11 голосов
/ 17 ноября 2011

Насколько я помню, конкатенация PHP-переменных (как в вашем третьем примере) происходит быстрее, чем использование "$var1 $var2" с учетом сочетания переменных и константных строк, поскольку каждый токен оценивается на лету (что плохо).

Итак, между 2 и 3, я полагаю, это зависит от контекста: если у вас длинная строка со смесью переменных и констант, то метод 3 будет быстрее. В противном случае, если он идентичен вашему примеру, 2 может быть быстрее ( однако, разница незначительна, и поэтому должно быть спорным ).

Использование шаблонизатора всегда будет медленнее, чем необработанный код.


Теперь если у вас нет очень веской причины не использовать шаблонизатор, вы должны использовать его всеми учетными записями. Почему?

  • Разделение интересов : ваш PHP не должен заботиться о вашем HTML и наоборот.
  • Обслуживание : Поддержание может стать кошмаром, когда вы смешиваете HTML и PHP (или любой другой язык в этом отношении), и его действительно следует избегать любой ценой (если вы не делаете что-то ослепительно тривиальное).
2 голосов
/ 17 ноября 2011

Производительность только? В первом примере вы используете Smarty, довольно весомую библиотеку, состоящую из тысяч строк PHP-кода. В следующих двух вы используете три строки PHP только . Конечно, эти два будут намного быстрее, с меньшими издержками, так как PHP не должен сначала анализировать Smarty.

Что касается того, являются ли конкатенация строк или подстанция переменных, а также какие кавычки и т. Д. Более быстрыми, то микрооптимизация вряд ли будет иметь значение в масштабе ниже Facebook. Один или другой просто экономит наносекунды. Вы можете прочитать живые сравнения на этой странице: http://www.phpbench.com/, если это поможет.

...