簡體   English   中英

PHP的條件測試速度

[英]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.
}

性能從快到慢的順序:

  • 其他
  • 如果
  • elseif

else將是最快的,因為它已經計算了if語句為truefalse 最慢的將是else if ,因為只有在iffalse時才必須調用它,然后必須進行額外的檢查。 正常的if在中間,只是一個額外的檢查。

但是,您不應基於性能來選擇此選項,而應基於程序應具有的邏輯。

當我欣賞您對速度的渴望時,我認為測量PHP條件語句的基准將永遠是不確定的,因為有許多不同的變量會影響您的輸出。

話雖如此, 本文顯示了if / elseif / else語句與switch / case語句之間的基准。 對我來說,切換/大小寫比if / elseif / else快15%,對我來說非常有趣。

希望這可以幫助您滿足企業級的超級需求!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM