Сокращение, если тогда еще производительность / оптимизация в php

Говоря о PHP, я хотел бы спросить, есть ли разница в производительности между этими двумя:

$name=($IsBoy)?"George":"Mary";

против

if($IsBoy)
{
    $name="George";
}
else
{
    $name="Mary";
}
  • Приведут ли эти два к другому коду операции?

  • Если да, будет ли теоретическая разница в производительности? (конечно, игнорируйте время, которое эти два должны быть прочитаны / скомпилированы / интерпретированы)

  • Если да, то могут ли оптимизаторы, такие как zend optimizer, воспользоваться этим и делать ли какие-либо изменения автоматически?

ps, если вы считаете, что мой код для "полной длинной руки" if-then-else слишком сложен, приведите пример самого основного кода и ответьте на него.

ОБНОВИТЬ:

Я надеялся, что вопрос совершенно ясен, но кажется, что люди не получают сообщение. Этот вопрос о ТЕОРЕТИЧЕСКОЙ (... но реальной и измеримой) разнице в производительности (вот почему я применил жирный и курсив теоретически). Пожалуйста, не отвечайте, говоря, какой стиль программирования более читабелен и что это слишком придирчиво, чтобы беспокоиться о производительности.

PS 2: делая акцент на слове "теоретический", я пытаюсь предотвратить ответы типа "не волнуйтесь, это не стоит хлопот, это всего лишь наносекунды".

3 ответа

Решение

Ок это довольно интересно

я сделал быстрый тест отладки х для ваших примеров буксировки соответственно

и вот что у меня есть

введите описание изображения здесь

введите описание изображения здесь

Конечно, вы можете иметь разные результаты с каждым обновлением, все они гарантируют, что

Второй метод лучше, чем первый всегда

хотя при каждом обновлении первый метод иногда занимает меньше времени, но это связано с оптимизацией ядра PHP

относительно оптимизатора Zend я не проверял это

Я часто отказываюсь от if-then-else в пользу:

$name = 'the expected';
if ([expr]) $name = 'the exception';

Легко читается, меньше скобок и компактный.

И обычный оператор ifelse, и троичный оператор имеют небольшую разницу в производительности. Вы можете проверить ссылки ниже на stackru для получения дополнительной информации.

кликните сюда

Другие вопросы по тегам