読者です 読者をやめる 読者になる 読者になる

メソッドの呼び出しの違い

スタティックなメソッド呼び出しと
インスタンスを生成してメソッドを呼び出す場合の違い

以前にちょっとどれぐらい処理に差があるか
気になったので調べてみた
因みにphpのバージョンは5.1.6
書いたコードは以下

<?php
class Hoge {
    function fuga() {
        return;
    }
}

// スタティックな呼び出し
$time_start = microtime(true);
for($i = 0; $i < 10000;$i++) {
    Hoge::fuga();
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo $time.'<br />';

// インスタンス生成した呼び出し
$hoge = new Hoge();
$time_start = microtime(true);
for($i = 0; $i < 10000;$i++) {
    $hoge->fuga();
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo $time;
  ┃スタティックコール        ┃インスタンス生成       ┃
01┃0.062727928161621┃0.023082971572876┃
02┃0.063868999481201┃0.023293972015381┃
03┃0.062108993530273┃0.022778987884521┃
04┃0.064042091369629┃0.023115873336792┃
05┃0.062854051589966┃0.023226022720337┃
07┃0.063203096389771┃0.02252197265625 ┃
08┃0.062053918838501┃0.022697925567627┃
09┃0.061697959899902┃0.022702217102051┃
10┃0.062878131866455┃0.022661924362183┃

大体3倍の差がありました
これ初めて結果を見たときはびっくりしました
逆にした場合もほぼ変わらない感じです