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

PHP 程式碼優化技巧 17 則(2011 版精選)

     編輯:PHP 綜合知識

效能微優化

  1. list() 解構爆炸陣列
    list(, $mid) = explode(';', $str); // 直接取第 2 段
  2. 用 === 替代 is_null()
    if ($var === null) // 比 is_null($var) 快(省函式呼叫)
  3. 嚴格比較 === 避免隱性轉型
    "42" == 42   // true
    "42" === 42  // false(型別不同)
  4. 少用 continue:結構化重寫為 if-else,減少跳轉開銷
  5. 警惕 switch/in_array 鬆散比較
    switch ($name) { case "laruence": ... }
    // $name = 0 會匹配所有 case!
    // 修正:switch (strval($name)) { ... }
    in_array($needle, $haystack, true); // 第 3 參數 true = 嚴格比較
  6. switch (true) 替代多重 if-else
    switch (true) {
        case $a: break;
        case $b: break;
        case $c: case $d: break;
    }
  7. 變數先定義後使用:未定義變數存取比已定義**慢 8 倍以上**(觸發 Notice、建立新變數邏輯)
  8. 不需第三變數交換值
    list($a, $b) = array($b, $a);
    // 整數可用異或(無溢出風險)
    $a ^= $b; $b ^= $a; $a ^= $b;
  9. ~~$num 替代 floor()(正數適用)
    echo ~~4.9; // 4,速度約 floor() 3 倍
    // 注意:大數會溢出(32 位系統 ~99999999999999 → 錯誤)
  10. do {} while (0) 技巧:消除 goto、巨集程式碼塊、模擬 break 跳出多層條件
  11. 避免使用 @:相當於 error_reporting(0); func(); error_reporting($old);,額外開銷大、除錯困難
  12. 避免遞迴,改迴圈(尾遞迴皆可展開)
    // 遞迴階乘
    function f($n) { return $n ? $n * f($n-1) : 1; }
    // 迴圈版
    $r = 1; for ($i=2; $i<=$n; $i++) $r *= $i;
  13. 用 $_SERVER['REQUEST_TIME'] 替代 time():省一次函式呼叫(精度同秒)
  14. 避免迴圈條件重複運算
    // 慢
    for ($i=0; $i < strlen($str); $i++) {}
    // 快
    for ($i=0, $len=strlen($str); $i < $len; $i++) {}
  15. 能用字串函式別用正則
    preg_match("!^foo_!i", $s)  →  !strncasecmp("foo_", $s, 4)
    preg_match("![a8f9]!", $s)   →  strpbrk("a8f9", $s)
    preg_match("!string!i", $s)  →  stripos($s, "string") !== false
  16. 雙引號/heredoc 變數加大括號
    echo "{$name}[2]"; // 明確界定變數範圍
  17. 回傳值語義區分:操作失敗 → false;查無資料 → null

總結

微優化雖小,**可讀性、正確性、維護性**永遠優先。效能瓶頸通常在 I/O、資料庫、演算法,而非語法糖。建議配合 xhprof/Blackfire 實測再優化。

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