首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 中 `if` 與 `or` 邏輯判斷的效能差異實測

     編輯:PHP 相關知識

PHP 中 `if` 與 `or` 邏輯判斷的效能差異實測

在高頻迴圈或效能敏感的代碼中,條件判斷的寫法可能影響執行速度。本文透過實際基準測試,比較 if (!defined('CONST')) 與 defined('CONST') or 1 兩種寫法的效能差異。

測試環境與方法

  • PHP 版本:5.6+ (測試結果在 7.x/8.x 趨勢一致)
  • 測試邏輯:在迴圈中重複執行 10,000 次與 1,000,000 次
  • 計時方式:microtime() 記錄開始與結束時間

測試代碼

<?php
// 測試 1:10,000 次迴圈
$t1 = microtime(true);
$i = 0;
while ($i <= 10000) {
    if (!defined('APP_PATH'));      // 寫法 A
    // defined('APP_PATH') OR 1;   // 寫法 B (取消註解測試)
    $i++;
}
$t2 = microtime(true);
echo "10,000 次 - if: " . ($t2 - $t1) . " 秒\n";

// 測試 2:1,000,000 次迴圈
$t1 = microtime(true);
$i = 0;
while ($i <= 1000000) {
    if (!defined('APP_PATH'));      // 寫法 A
    // defined('APP_PATH') OR 1;   // 寫法 B
    $i++;
}
$t2 = microtime(true);
echo "1,000,000 次 - if: " . ($t2 - $t1) . " 秒\n";
?>

實測結果 (典型輸出)

迴圈次數if (!defined())defined() OR 1差異
10,000~0.011 秒~0.009 秒OR 快 ~18%
1,000,000~0.200 秒~0.107 秒OR 快 ~46%

原理解析

  • if 語句涉及完整的控制結構:評估條件、分支跳轉、建立作用域。
  • or (或 ||) 是短路運算子,僅需評估左側運算元,若為真則直接短路,無分支開銷。此處 defined() 回傳 false,導致右側 1 被評估,但整體指令較少。
  • 在現代 PHP (7.0+) 中,OpCache 優化會縮小差距,但 or 寫法在純邏輯判斷無副作用時仍略勝一籌。

最佳實踐建議

  1. 可讀性優先: 一般業務邏輯請使用 if/else,語意清晰。
  2. 高頻熱點路徑: 在極高頻迴圈、遞迴、基礎庫代碼中,可考慮 defined('C') or define('C', 'val') 等慣用模式。
  3. 避免過度優化: 差異在百萬次約 0.1 秒,實際專案中通常非瓶頸,優先優化資料庫查詢、快取策略、I/O 操作。

理解底層執行機制有助於寫出更高效的代碼,但務必在團隊協作與維護性之間取得平衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved