2009-03-19 3 views
12

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

<?php echo $var; ?> 

<?=$var?> 

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

+2

Мне нравится короткий синтаксис. Это чище. – gradbot

+2

просто перекомпилируйте php с флагом -zomg-optimize – 2009-03-19 20:16:16

ответ

17

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

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

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

+0

Вы правы, мне нравится писать портативный код. спасибо всем 4 ответам. – grilix

+1

Я всегда использую короткую форму. Если мне когда-либо понадобится запустить код, где он не включен или когда мне нужно для XML (ни один из которых никогда не произошел), это простой пример s/ cletus

+4

@cletus: со всем уважением у вас нет идеи frikin. – vartec

4

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

7

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

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

-Адам

+1

Когда у вас есть миллиарды прогонов, вы все равно не будете/не должны использовать PHP. – tstenner

+0

@tstenner: Facebook не согласен с вами. – TheTXI

+0

Бросьте на это достаточно оборудования ... Иногда время разработчиков может быть дороже, чем больше аппаратного обеспечения, а рефакторинг всего кода для повышения производительности не является разумным, если вы можете просто масштабировать аппаратное обеспечение. Тем не менее, они используют оптимизаторы php ... –

6

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

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

+0

+1 для самых точных мыслей – David

5

в PHP ASP-стиль <%%> поддержки 5,3 коротких меток устареют, попытайтесь избежать этого и переписать код на '<?php echo' format, потому и не можешь использовать <?xml ?> инлайн, например.

+0

Еще одна гениальная идея от тех, кто на PHP ...: | –

+0

Насколько я знаю, он не удаляется, а отключается по умолчанию. Есть разница. –

+0

Что делает ответ более или менее FUD. Ницца. – chaos

3

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

Значение есть шанс, что он отключен на некоторых веб-серверах.

+0

Почему это поддерживается? Он специально попросил сравнить производительность, вопрос не имел ничего общего с переносимостью. Это никоим образом не отвечает на вопрос, оно даже не пытается этого сделать. – meagar

3

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

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

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

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

+1

На данный момент у меня есть все переменные чистые и безопасные :) .. Так что мне нужно только распечатать его. – grilix

+1

@bobince Это серьезный случай паранойи ... вы используете htmlspecialchars() на ВСЕХ ваших vars ? –

+0

@jcinacio - Если переменная передается клиенту и не была намеренно построена, чтобы содержать HTML, да, вы действительно должны сначала ее кодировать. Это потенциально серьезная проблема безопасности. –

2

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

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

1

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

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

+0

10% * много * на порядок выше фактического штрафа за производительность, от которого вы будете страдать от использования ' meagar