2012-02-21 41 views
-1

是在PHP檢查一個布爾值一樣快,是在PHP運行更快的布爾支票或只是一個簡單的== 1/== 0

if($var) 

if($var == 1) 

if(!$var) 

if($var == 1) 

var只能是1或0.

+5

不成熟的優化是所有邪惡的根源 JRL 2012-02-21 18:29:37

+0

對於一個人來說不是不成熟的,兩個人我不需要擔心可讀性唯一的因素是我需要擔心的是速度。 – cgwebprojects 2012-02-21 18:36:25

+1

編寫一個測試腳本,循環使用每個可能的場景數百萬次的隨機值並查看。我懷疑APC或eAccelerator中的優化器會爲你優化,如果你不使用其中的一個 - 它們會比你寫if/then/else的方式增加你的速度。 – 2012-02-21 18:39:15

回答

1

我預計直接評估變量的truthy岬會比如果兩個變量是相等的測試更快。我的測試表明這是事實。當計算==運算符時(這是對一個返回真值的附加函數的調用),你會期望有更高級別的間接性,因此它會增加一些非常小的開銷。

有人提出這是一個過早的微觀優化。我個人不認爲這是因爲

  1. 個人而言,我喜歡閱讀if ($var) {}if ($var == 1) {}

  2. 只需要語言的一個非常基本的瞭解才知道,任何truthy(相當於真)值可以if語句

  3. 內部評估在某些方面,它可能引起的如何,如果語句的工作方式(任何一個小數鼓勵if ($var == true) {}如果僅僅是肯定有用)意識

鑑於它速度更快,看起來這些點雖然很小,但表示if ($var) {}是更好的選擇。至少在考慮到我的個人偏好時,這是我的看法。

相關問題