T

PHPのパフォーマンス改善(1)

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’]

つづく

Posted by on 2月 16, 2007 in PHP

コメントを残す