Сокращение, если тогда еще производительность / оптимизация в 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 для получения дополнительной информации.