strace 追蹤系統呼叫,ltrace 則追蹤**動態庫函數呼叫**,是定位 PHP 使用者空間效能瓶頸的利器。
測試程式:建立 2000 字串元素陣列,再用 in_array 搜尋 2000 次。
$y = '1380';
$arr = [];
for ($i = 0; $i < 2000; $i++) $arr[] = "{$i}"; // 故意存字串
for ($i = 0; $i < 2000; $i++) {
if (!in_array($y, $arr)) continue;
}
% time seconds usecs/call calls function 95.02 7.417240 368 20146 strtol 2.15 7.160390 413 17316 memcpy 1.63 5.522641 240 22966 free ...
strtol 佔 95% 時間:in_array 比較字串與整數時,PHP 內部反覆呼叫 strtol 將字串轉長整數。
將陣列元素預先轉為整數:$arr[] = $i;,消除轉換開銷,效能大幅提升。
ltrace 讓使用者空間熱點一目了然,是 PHP 效能調優工具箱必備。