星期五, 二月 29, 2008

PHP5 寫法效能比較(有數據資料)

關於 PHP 程式該怎麼寫, 才會比較快的文章, 這類已經很多了, 不過這篇是有做實際測試的數值.(差異太小的就不要去管他了)

不過, 通常慢都會慢在 DB 的部份, PHP 的部份, 要慢到讓系統卡住, 是比較難一點(寫成無窮迴圈, 或者排序丟到 PHP 排的, 要自己認命).. :P

詳見: 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%)
相關標籤

this is comment icon 不錯的建議 [回覆]

經驗過,in_array() 真的比較好用,而且速度很快~

PDO 真的很多資料都寫它不錯,而且 ZF 也有用…

只是比較好奇的是 '' 會比 "" 快,這真的還滿有趣的…

Comment by 藏袍逢毅 (03/03/2008 12:28)

this is comment icon 回 藏袍逢毅 [回覆]

唷, '' 會比 "" 快是很正常的.
您可以試試
$var = 'abc';
echo '$var'; 和 echo "$var"; 就會知道為何會比較快囉. :)

Comment by Tsung (03/03/2008 12:34)

this is comment icon soga... [回覆]

ha... 那是不是為了加快就要多寫 ''

-_-" 那兜一個字串不就死掉了~

any way, 有趣的問題…

Comment by 藏袍逢毅 (03/17/2008 02:44)

this is comment icon 回 藏袍逢毅 [回覆]

上面寫的那些, 純參考就好了, 基本上 ' 和 " 的速度上, 應該不會慢到讓你有感覺才對. 注意那種 50% 以上的就好了 :)

Comment by Tsung (03/17/2008 09:05)

this is comment icon in_array [回覆]

我想in_array那個的interation代表的是用迴圈去跑,不管是for還是while。
只要用迴圈跑過一次array再每筆用if判斷是否存在,這樣就會慢過於用in_array

Comment by CFC (03/28/2008 19:12)

this is comment icon 回 CFC [回覆]

原來是指這個意思, 感謝指點. Orz..

Comment by Tsung (03/28/2008 20:49)
Add this page to del.icio.us Add this page to Yahoo Taiwan's bookmark Add this page to MyShare

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~