Есть ли разница в скорости между <? Php echo $ var; ?> и <? = $ var?>? - PullRequest
12 голосов
/ 19 марта 2009

Есть ли разница в скорости между этими двумя версиями?

<?php echo $var; ?>

<?=$var?>

Что вы рекомендуете и почему?

Ответы [ 9 ]

17 голосов
/ 19 марта 2009

Разница в производительности незначительна. Более того, при использовании APC разница в производительности равна нулю, нулю, нада.

<?=$var?> требует активированных коротких тегов. Короткие теги проблематичны в XML, потому что <? также является разметкой для тега обработки XML. Поэтому, если вы пишете код, который должен быть переносимым, используйте длинную форму.

См. short_open_tag описание в http://www.php.net/manual/en/ini.core.php

7 голосов
/ 19 марта 2009

Технически парсер должен анализировать каждый символ более длинной версии, и для каждой передачи есть еще несколько символов.

Если ваш веб-сервер не «предварительно компилируется» (т. Е. Кэширует страницы PHP с токенами), тогда существует небольшая разница в производительности. Это должно быть незначительным, за исключением, может быть, когда вы начинаете говорить о миллиардах пробежек.

-Adam

6 голосов
/ 19 марта 2009

Производительность невелика.

Правильное использование говорит о том, чтобы использовать более длинный, так как он более переносимый. Лично? Я делаю короче.

5 голосов
/ 19 марта 2009

в php 5.3 поддержка ASP-стиля <%%> устарела, попробуйте избежать этого и переписать код в '<?php echo' format, потому что вы не можете использовать <?xml ?> inline, например.

4 голосов
/ 19 марта 2009

Нет, они идентичны. Если вам нравится много печатать, используйте <?php echo $var; ?>, в противном случае просто сэкономьте время с помощью <?=$var?>.

3 голосов
/ 19 марта 2009

Что вы рекомендуете

Ни один, если вы действительно не хотите разрешить HTML-инъекцию. (99% времени, вы не делаете.)

<?php echo htmlspecialchars($var); ?>

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

3 голосов
/ 19 марта 2009

Я думаю, что второй требует, чтобы short_open_tag (в PHP.ini) был установлен в true.

То есть есть вероятность, что он отключен на некоторых веб-серверах.

2 голосов
/ 19 марта 2009

Разница в скорости зависит от того, как быстро вы сможете набрать эти 9 дополнительных символов.
Он также может улучшить читаемость кода, но это спорно.

Если вы говорите о скорости выполнения, заметной разницы нет.

1 голос
/ 12 августа 2009

Не пытайтесь оптимизировать с этим, это бесполезно. Вместо этого отключите allow_short_tags (из-за проблем при загрузке файлов XML) и напишите чистый, читаемый и понятный код.

Даже если может быть небольшая разница (которая определенно меньше 10%), стоит оптимизировать ее. Если ваши сценарии медленные, сначала посмотрите на ваши циклы. Большую часть времени вы можете добиться гораздо большей производительности, оптимизируя поток программ, чем с помощью странного синтаксиса.

...