PHPSPOT開発日誌に紹介されていたAlex Moskalyuk BlogPHP12個の最適化テクニック方法を下記に明記しておきます。

  1. staticメソッドが使用できれば、4倍の速度に改善されます。
  2. __get、 __set、 __autoloadはやめましょう。
  3. require_once()は重いです。
  4. includesとrequiresはフルパスを使用しましょう。OSパスを使用すれば短時間で処理できます。
  5. スクリプト開始のUNIXタイムを知りたければ$_SERVER[’REQUEST_TIME’]で取得できる。
  6. 正規表現の替わりにstrncasecmp関数、strpbrk関数、stripos関数が使えるならこれらを使用しましょう。
  7. preg_replace関数はstr_replace関数よりも早いが、strtr関数はpreg_replace関数よりも4倍速いです。
  8. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避けましょう。
  9. @を使用したエラー制御は非常に遅いです。
  10. $row[’id’]は$row[id]よりも7倍早いです。
  11. (PHPの)エラーメッセージは非常に重いです。
  12. ループ処理の中で関数を使用しない。たとえばfor ($x=0; $x < count($array); $x)の様な毎回count関数を呼び出すような処理。


  1. If a method can be static, declare it static. Speed improvement is by a factor of 4.
  2. Avoid magic like __get, __set, __autoload
  3. require_once() is expensive
  4. Use full paths in includes and requires, less time spent on resolving the OS paths.
  5. If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()
  6. See if you can use strncasecmp, strpbrk and stripos instead of regex
  7. preg_replace is faster than str_replace, but strtr is faster than preg_replace by a factor of 4
  8. If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments.
  9. Error suppression with @ is very slow.
  10. $row[’id’] is 7 times faster than $row[id]
  11. Error messages are expensive
  12. Do not use functions inside of for loop, such as for ($x=0; $x < count($array); $x) The count() function gets called each time.