Есть ли разница между выводом строки вывода или закрытием тегов php и написанием HTML-кода? - PullRequest
3 голосов
/ 02 июня 2009

Я почти уверен, что ответом на это является "Нет вообще!" но я все равно спрошу. Если у вас есть условный оператор в PHP, который отображает строку html, есть ли разница в производительности между этими двумя примерами:

<?php if ($output) { ?>
  <h2><?=$output;?></h2>
<?php } ?>

и

<?php if ($output) { echo "<h2>".$output."</h2>"; } ?>

Ответы [ 10 ]

9 голосов
/ 02 июня 2009

Не думаю, что есть заметная разница в производительности. Я использую любой вариант, который делает мой код более читабельным.

6 голосов
/ 02 июня 2009

Ответ буквально - "Нет вообще". Рассмотрим

<span>
<?php
  echo $myMessage;
?>
</span>

и

<?php
  echo "<span>\n";
  echo $myMessage;
  echo "</span>";
?>

Я собираюсь из памяти (несколько лет назад), но в этот момент компилятор байт-кода Zend выдает практически идентичный вывод; «буквальный» HTML был скомпилирован в оператор echo, содержащий текст.

5 голосов
/ 02 июня 2009

Теги <?= ?> недопустимы, если только у вас не включено short_open_tags, что не рекомендуется.

4 голосов
/ 02 июня 2009

Если вы действительно занимаетесь микрооптимизацией, вам следует начать с изменения

echo "<h2>".$output."</h2>";

в

echo '<h2>', $output, '</h2>';

(без расширения переменных и без конкатенации строк)

3 голосов
/ 02 июня 2009

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

2 голосов
/ 02 июня 2009

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

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

2 голосов
/ 02 июня 2009

Это называется микрооптимизацией, на такие различия в производительности нельзя полагаться

Но это лучше по производительности за несколько наносекунд

<?php if ($output) { ?>
  <h2><?=$output;?></h2>
<?php } ?>
1 голос
/ 03 июля 2009

Я должен был знать, поэтому запустил несколько разных блоков в цикле из 10000 итераций. Извлеченный урок: не беспокойся. Напишите код, который будет удобочитаемым и поддерживаемым. Используйте шаблон MVC ...:)

время : 2,66 микросекунды

<? if ($output) { ?>
    <h2><?=$output;?></h2>
<? } ?>

время : 1,65 мкс

<? if ($output) { echo "<h2>$output</h2>"; } ?>

время : 1,65 мкс

<? if ($output) { echo "<h2>".$output."</h2>"; } ?>

время : 1,64 мкс

<? if ($output) { echo '<h2>'.$output.'</h2>'; } ?>
1 голос
/ 03 июня 2009

Почему бы просто не проверить это? нюхая или просматривая источник страницы в вашем любимом браузере.

1 голос
/ 02 июня 2009

Я предпочитаю вариант 1, так как он облегчает редактирование HTML в большинстве случаев - особенно при работе с div с внутренним содержимым.

Производительность незначительна в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...