2013-07-01 2 views
4

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

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

против

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

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

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

p.s. если вы считаете, что мой код для «full-longhand» if-then-else слишком сложный, пожалуйста, укажите пример самого базового кода и ответьте на это.

UPDATE:

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

p.s. 2: уделив особое внимание теоретическому слову, я стараюсь предотвратить ответы типа «не беспокойтесь, что это не стоит проблем, его просто наносекунды».

+0

Я не знаю, для какой-либо определенности, но мое предположение я при отсутствии реальной разницы в производительности между ними, и если это будет микро-оптимизация, о которой вы не должны беспокоиться. – chrislondon

+2

Вы можете проверить это: http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not – vitozev

+0

Статья Фабьена в значительной степени соответствует моим собственным наблюдениям; хотя приятно видеть объяснение о том, почему –

ответ

4

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

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

и вот, что я получил

enter image description here

enter image description here

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

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

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

относительно к Zend Optimizer я не проверял, что

-1

И нормальный IfElse оператор и тройная оператор имеет небольшое Perfomance difference.You может проверить ссылки ниже StackOverflow для получения дополнительной справки

Click here

0

Я часто отбрасывать, если-то-иначе в пользу:

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

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

+0

Это очень мило, я тоже это делаю, но это не ответ на мой вопрос. – Sharky

Смежные вопросы