[英]php speed testing of conditionals
假設頁面上已經有一個if語句。
現在,出於:
a second if statement
else
else if
哪個最快,哪個最慢?
$ a僅接受兩個可能的值有關系嗎?
編輯:示例代碼:
$a=2;
if ($a==1){
...
}
然后
if ($a==2){
...
}
要么
else {
...
}
要么
else if ($a==2){
...
}
這並不是真正的答案,但我想知道為什么您認為這很重要? (如果您擔心將事情優化到這個水平,那么我懷疑PHP可能不是理想的語言。)
從本質上講,代碼的易讀性,一致性和任何有助於長期維護的事情都比這種微優化更為重要,如果您遇到性能問題,我會很樂意花大量的錢(盡管是別人的錢)它與if / else / switch等代碼塊無關。
因此,如果您遇到性能問題,請對代碼進行概要分析,以找出問題所在-不要浪費時間擔心條件語句布局的“最佳”形式。 “最佳”形式是從事項目工作的程序員最容易理解的形式。
除非您在同一頁面上進行一百萬次比較(這不太可能),否則從根本上說沒有關系。 使用最易讀的內容。
如果您有許多if
/ elseif
條件,也請查看switch
語句。
使用單獨的if條件可能會比使用else條件稍慢一些,但是請注意,即使擁有一百萬個條件,您也不會注意到其中的區別。 如果您確實需要速度,那么php並不是正確的選擇。
要確定答案,您必須自己對條件句的不同風格進行分析。
哪個最快,哪個最慢?
我認為速度上的差異可以忽略不計,但后者似乎更快。 前一個解決方案將測試兩個不同的條件,而在后一個示例中,甚至不會評估elseif中的條件:這將不是必需的。 因此,我認為這應該是最快的:
<?php
$foo = 42;
if( $foo === 42 ) {
}
elseif( $foo === 43 ) { // the condition isn't executed.
}
性能從快到慢的順序:
else
將是最快的,因為它已經計算了if
語句為true
或false
。 最慢的將是else if
,因為只有在if
為false
時才必須調用它,然后必須進行額外的檢查。 正常的if
在中間,只是一個額外的檢查。
但是,您不應基於性能來選擇此選項,而應基於程序應具有的邏輯。
當我欣賞您對速度的渴望時,我認為測量PHP條件語句的基准將永遠是不確定的,因為有許多不同的變量會影響您的輸出。
話雖如此, 本文顯示了if / elseif / else語句與switch / case語句之間的基准。 對我來說,切換/大小寫比if / elseif / else快15%,對我來說非常有趣。
希望這可以幫助您滿足企業級的超級需求!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.