關於 PHP 程式該怎麼寫, 才會比較快的文章, 這類已經很多了, 不過這篇是有做實際測試的數值.(差異太小的就不要去管他了)
不過, 通常慢都會慢在 DB 的部份, PHP 的部份, 要慢到讓系統卡住, 是比較難一點(寫成無窮迴圈, 或者排序丟到 PHP 排的, 要自己認命).. 😛
詳見: Practical (and impractical) PHP Optimizations
測試環境: Ubuntu 7.10 server, PHP 5.2.3-1, Apache 2
基本上, 速度差距如果沒有在 50% 以上, 我是覺得都無所謂, 在文章中, 是採用幾個 function 去做測試比較, 然後建議使用(比較快)的會用底線畫出來.
在 10% 以下的, 就不要在意了~ 🙂
直接列結論:
- PDO > 一般 mysql_query (90% - 沒有加 WHERE 條件)
- PDO > 一般 mysql_query (48% - 有加 WHERE 條件)
- PDO > mysql_query (25% - INSERT)
- Static Method > Non-Static Method (48%)
- function > @function (32% - @ 是錯誤不顯示出來)
- Array 加 Quote > 沒加 Quote (74%)
- unset 再使用變數 > 沒有 unset 直接把變數內容換掉 (28%)
- str_replace > preg_replace > ereg_replace (50%)
- split > explode (23%)
- echo ''; > echo ""; (21%)
- while > for > foreach (13%)
- is_numeric > ctype_digit (11%)
- in_array > iteration (9% - 不曉得指的是什麼, 反正用 in_array() 就是了)
- echo > print (8%)
- 變數 defined > 變數 undefined (6%)
- 數字值 foreach > 文字值 foreach (1%)
- ' > " (1%)
- require_once > include_once (1%)
經驗過,in_array() 真的比較好用,而且速度很快~
PDO 真的很多資料都寫它不錯,而且 ZF 也有用…
只是比較好奇的是 '' 會比 "" 快,這真的還滿有趣的…
唷, '' 會比 "" 快是很正常的.
您可以試試
$var = 'abc';
echo '$var'; 和 echo "$var"; 就會知道為何會比較快囉. 🙂
ha... 那是不是為了加快就要多寫 ''
-_-" 那兜一個字串不就死掉了~
any way, 有趣的問題…
上面寫的那些, 純參考就好了, 基本上 ' 和 " 的速度上, 應該不會慢到讓你有感覺才對. 注意那種 50% 以上的就好了 🙂
我想in_array那個的interation代表的是用迴圈去跑,不管是for還是while。
只要用迴圈跑過一次array再每筆用if判斷是否存在,這樣就會慢過於用in_array
原來是指這個意思, 感謝指點. Orz..
split > explode (23%)
這有寫錯嗎
我想應該是沒錯, 因為 split 支援 regex.
另外, 現在官方把 split 拿掉, 建議都要改用 explode 囉~