2010/02/28

[PHP, 最適化]「staticが使えるなら、staticを使う。速度は4倍になる。」って本当?

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

よく言われる、「PHPの最適化 12 PHP Optimization tips」が本当か、今更ながら検証してみます。
環境は
  • EeePC 1002HA
  • Ubuntu 9.10
  • Apache/2.2.12 (Ubuntu)
  • PHP Version 5.2.10-2ubuntu6.4
 ネットブックですが何か?

では第一弾。
タイトルのとおり「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 '<pre>';
var_dump($timerHolder);
echo '</pre>';
結果は
array(2) {
  ["static"]=>
  float(0.191190958023)
  ["nonstatic"]=>
  float(0.161245107651)
}

static 遅くね?

static はちゃんと設計して使いましょう。
ってことなのかな・・・?