echo 'hello '.$name 比 echo "hello $name" 快。static 方法無需實例化,速度提升 ~4 倍。$row['id'] 比 $row[id] 快 7 倍(後者會先嘗試常數再轉字串)。echo 多參數輸出:echo $a, $b 比 echo $a.$b 快,避免字串連接開銷。$len = count($arr); for($i=0;$i<$len;$i++),勿在條件中重複呼叫函式。unset($bigArray) 或 $bigArray = null 釋放記憶體。__get/__set/__autoload 有額外開銷,能用陣列/屬性就不用。require_once:檢查檔案是否已載入有額外開銷,生產環境用 Composer 自動載入(類別映射表)。include __DIR__.'/lib.php' 避免遍歷 include_path。$_SERVER['REQUEST_TIME']:比 time() 免去函式呼叫。strpos、str_replace 比 preg_match、preg_replace 快數倍。strtr 最快:單字元替換 strtr > str_replace > preg_replace (約 4:1:0.25)。switch 優於多重 if-else:Opcode 層面優化,可跳轉表加速。@ 抑制錯誤:極度低效,改用 error_reporting 或條件判斷。display_errors,啟用 log_errors。$i++ 約等於函式內局部變數速度。$GLOBALS['x']++ 需查符號表。$this->prop++ 涉及物件存取器。strlen() vs isset() 檢查長度:if (!isset($str[5])) 比 if (strlen($str) < 5) 快(語言結構 vs 函式)。++$i 比後置 $i++ 快:少一個暫存變數,Opcode 3 vs 4 條。mod_deflate/mod_gzip:傳輸量降 80%,提升體感速度。file_get_contents 替代 fopen/fread 系列:單一系統呼叫,效能高;注意 allow_url_fopen 設定。SELECT:索引、避免 SELECT *、分頁用游標而非 OFFSET。array_filter、array_map 等經 C 優化。array_column/array_map 向量化操作。explode/implode/substr 遠快於正則。foreach 優於 for/while:專為陣列優化,語法更簡潔。$i += 1 優於 $i = $i + 1:Opcode 更精簡。unset():釋放符號表條目。| 層級 | 動作 | 投入產出比 |
|---|---|---|
| L1 架構 | Opcode 快取、資料快取、靜態化、DB 索引 | ⭐⭐⭐⭐⭐ |
| L2 程式碼 | 循環優化、內建函式、避免魔術方法、正則替換 | ⭐⭐⭐⭐ |
| L3 微優化 | 單雙引號、前後置遞增、isset 技巧 | ⭐⭐ |
遵循「先架構、後程式碼、再微優化」原則,才能用最少投入換取最大效能增益。