PHPSPOT開発日誌に紹介されていたAlex Moskalyuk BlogのPHP12個の最適化テクニック方法を下記に明記しておきます。
- staticメソッドが使用できれば、4倍の速度に改善されます。
- __get、 __set、 __autoloadはやめましょう。
- require_once()は重いです。
- includesとrequiresはフルパスを使用しましょう。OSパスを使用すれば短時間で処理できます。
- スクリプト開始のUNIXタイムを知りたければ$_SERVER[’REQUEST_TIME’]で取得できる。
- 正規表現の替わりにstrncasecmp関数、strpbrk関数、stripos関数が使えるならこれらを使用しましょう。
- preg_replace関数はstr_replace関数よりも早いが、strtr関数はpreg_replace関数よりも4倍速いです。
- 引数を、単体か配列かで自動判別するようなコードは出来るだけ避けましょう。
- @を使用したエラー制御は非常に遅いです。
- $row[’id’]は$row[id]よりも7倍早いです。
- (PHPの)エラーメッセージは非常に重いです。
- ループ処理の中で関数を使用しない。たとえばfor ($x=0; $x < count($array); $x)の様な毎回count関数を呼び出すような処理。
[原文]
- If a method can be static, declare it static. Speed improvement is by a factor of 4.
- Avoid magic like __get, __set, __autoload
- require_once() is expensive
- Use full paths in includes and requires, less time spent on resolving the OS paths.
- If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()
- See if you can use strncasecmp, strpbrk and stripos instead of regex
- preg_replace is faster than str_replace, but strtr is faster than preg_replace by a factor of 4
- 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.
- Error suppression with @ is very slow.
- $row[’id’] is 7 times faster than $row[id]
- Error messages are expensive
- Do not use functions inside of for loop, such as for ($x=0; $x < count($array); $x) The count() function gets called each time.
(英語の翻訳には自信がありませんので、間違い等がありましたらご指摘ください)
- 投稿タグ
- PHP
コメント