2013-07-01 54 views
4

談到PHP然後其他性能/優化,我想問一下,如果有這兩個之間的性能差異:速記,如果在PHP

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

VS

if($IsBoy) 
{ 
    $name="George"; 
} 
else 
{ 
    $name="Mary"; 
} 
  • 這兩個結果會導致不同的操作碼?

  • 如果是,將是任何理論性能的區別? (當然忽略這兩個需要被讀取/編譯/解釋的時間)

  • 如果是,那麼像zend optimizer這樣的優化器會利用這一點並自動執行任何重新安排?

p.s.如果您認爲我的「全手寫」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

Fabien的文章與我自己的觀察結果非常相似;雖然很高興看到爲什麼 –

回答

4

確定這個挺有意思

我已經做了一個快速X調試測試你拖例子分別

,並在這裏我已經得到

enter image description here

enter image description here

當然,你可能有各自不同的結果刷新把所有的人都確保

方法二比第一總是

更好即使通過每次刷新你會發現第一種方法需要較少的時間偶爾 但這事與PHP核心優選

關於向Zend Optimizer的有關我沒有測試

-1

正常ifelse語句和三元運營商有輕微的性能比較difference.You可以檢查以下計算器鏈接,瞭解更多參考

Click here

0

我經常丟棄IF-THEN-ELSE中的好處:

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

易讀,小括號和緊湊。

+0

多數民衆贊成在相當不錯,我也這樣做,但它不是我的問題的答案。 – Sharky