slumbers

思いついたことをつらつらと

「staticが使えるなら、staticを使う。速度は4倍になる。」って本当?

[追記]2013/01/25
今更以下の情報はさすがに古いです・・・
昔はこういうことがあったんだよと下の世代へお伝え下さい・・・。

よく言われる、「PHPの最適化 12 PHP Optimization tips」が本当か、今更ながら検証してみます。
環境は
 ネットブックですが何か?

では第一弾。
タイトルのとおり「staticが使えるなら、staticを使う。速度は4倍になる。」って本当??


テストしたスクリプトはこちら
class A
{
    public static function staticA()
    {
        return true;
    }
   
    public function nonStaticA()
    {
        return true;
    }
}

$limit = 100000;
$timerHolder = array(
    'static'    => 0,
    'nonstatic' => 0,
);

$start = microtime(true);
for ($i = 0; $i < $limit; $i++) {
    A::staticA();
}
$end = microtime(true);
$timerHolder['static'] = $end - $start;

$a = new A();
$start = microtime(true);
for ($i = 0; $i < $limit; $i++) {
    $a->nonStaticA();
}
$end = microtime(true);
$timerHolder['nonstatic'] = $end - $start;


echo '
';
var_dump($timerHolder);
echo '
';
結果は
array(2) {
["static"]=>
float(0.191190958023)
["nonstatic"]=>
float(0.161245107651)
}
static 遅くね?
static はちゃんと設計して使いましょう。
ってことなのかな・・・?