PHPのパフォーマンス改善(1)
PHP February 16th, 2007
Zend / PHP Conference & Expo 2006でのIlia Alshanetsky氏プレゼン資料(PDF)
やや旧聞に属するが、一次保存場所に漂っているファイルを見つけたのでまとめてみた。Apacheやサーバのチューニングも含まれていてなかなか面白かったが、ここではPHPのプログラマがスクリプトを記述する際に注意する点を取り上げる。
(0)クラスメソッドをスタティックに宣言する
class bench{
public function a(){
return 1;
}
public static function b(){
return 1;
}
}
これを100,000回まわすとstaticの方が4倍くらい速い。
(1)マジックメソッドは使わない
__get()や__set()、__autoload()、__call()などの利用はパフォーマンス的にあまりよろしくない。
(2)require_onceはやっぱり呼び出しすぎる
require_onceで呼び出されるファイルは、複数回呼ばれても問題がないだけで、呼び出し自体は複数回実行されている。
どうしても使わなければいけない場合はフルパスを記述するとよい。
PHP5.2以上では、呼び出し回数も1回だけになった。
(3)無意味な関数コールをなくす
わざわざ関数を呼ばなくても、定数が用意されているものはそちらを使おう。
php_version => PHP_VERSION
php_uname(’s’) => PHP_OS
php_sapi_name() => PHP_SAPI
だいたい50倍くらい速い。
ちなみにWindows上で動いているかを確認する場合は、「DIRECTORY_SEPARATOR == ‘\\’」で判定する方がいい。
それから、現在時刻をUNIX時間で返してほしい場合はこれ。
time() => $_SERVER['REQUEST_TIME']
つづく