PHPのコード最適化

PHPのコード最適化のエントリがあったので軽く読んでみた。

たくさんありすぎてなんともいえませんが、意識するようにはしたいなぁ。

33. if (strlen($foo) < 5) を調べたいなら if (!isset($foo{5})) と書くと速い。

これは知らなかった。

20番ぐらいまでは割とよく使いそうな感じなのでメモ。

  1. static にできるメソッドは static として宣言しよう。(4倍速い)
  2. echo の方が print より速い。
  3. echo ‘文’,'字’; (カンマ区切り)の方が、’文’.'字’ (ドット連結)より速い。
  4. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。
  5. 大きい配列のような変数は unset ()してメモリを解放しよう。
  6. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。
  7. require_once はハイコストなのです。
  8. include や require でファイルはフルパスで指定しよう。
  9. スクリプト開始時間は time() でなく $_SERVER[’REQUEST_TIME’] で取得。
  10. 可能であれば、正規表現より strncasecmp、strpbrk、stripos を使おう。
  11. strtr(str_replace の4倍速い) > str_replace > preg_replace の順に速い。
  12. 引数に配列、文字列両方を受け入れるような関数は避け、個別に関数化しよう。
  13. if をたくさん使ってるなら switch を活用しよう。(訳注:ってことでいい?)
  14. @によるエラー制御はすんごく遅い。
  15. Apache の mod_deflate(Apache2系) を ON にしておこう。(No.42 参照)
  16. 処理が終わったらデータベースの接続は切っておこう。
  17. $row[’id’] は $row[id] より7倍速い。
  18. エラーメッセージはハイコスト。
  19. for 文の条件式には count($array) のような関数をいれない。(変数に格納)
  20. メソッド内ではローカル変数をインクリメントするのが一番速い。

13が気になるなぁ。
switchはあんまり使わないからなぁ。

可読性が悪くならないようにうまいこと両立させていきたいな

このページのトップに戻る
投稿日:2008/5/23  投稿者:zuya  

通り雨

said

2008/5/2718:06:47

自分はプログラムは門外漢なのでよく分からないのですが、
以下のエントリも合わせてチェックしておいたほうが良い
かもしれません。参考までに。

http://d.hatena.ne.jp/gegegen/20080524/1211622711

pose

said

2008/5/298:04:14

確かに。

僕も結構PHP触りだしたのですが、

“トリッキー”なコーディングはダメですね。どんなプログラムにおいても。

ただし、これはチームでのプロジェクトにおいてだけです。

一人でやる場合は、プログラマーとして完璧なものを組みたがるので何でもありです。

少しでも早いならそれを優先。もちろんありですね。

zuya

said

2008/5/3018:11:18

>通り雨さん
ありがとうございます、チェックさせてもらいました。
最適化はあくまで参考程度に考えるのがいいってことですねぇ。
勉強になります

>poseさん
一人で自分しか使わないようなコードならなんdねもありですよね。
しかしトリッキーすぎると、後で自分でも治しずらかったりして大変ですが。
自分の中でのバランスが難しいとこですね

Add your comment



comments

TrackBack URL

このページのトップに戻る