在PHP中调用Class属性与Class方法之间的性能?

时间:2011-02-16 02:28:39

标签: php performance

我知道这根本不会引起注意,只是为了学习,有没有调用类方法调用类属性的开销,就像我在下面的例子中显示$ router->控制器和$ router->动作?请不要激怒我过早优化,只是想了解更多信息。

// Using Class property
$router = new Router($uri, $uri_route_map);
$router->dispatch($router->controller, $router->action);

// Using Class methods instead
$router = new Router($uri, $uri_route_map);
$router->dispatch($router->controller(), $router->action());

2 个答案:

答案 0 :(得分:4)

$router->controller 访问类属性,基本上只是读取变量。
$router->controller() 正在调用一个函数。调用函数必然会比读取变量有更多的开销,特别是因为函数本身可能会读取变量。

答案 1 :(得分:3)

由于您正在学习,请在计时器脚本中自行尝试以获得粗略估计:

class MyClass
{
    public $property1 = 'a';

    public function method1()
    {
        return $this->property1;
    }
}

$mc = new MyClass();

$start = 0; $end = 0;

// property
$start = microtime(true);
for ($a=0; $a<10000; $a++) {
    $mc->property1; 
}
$end = microtime(true);
echo $end - $start . "<br />\n";

// method
$start = microtime(true);
for ($b=0; $b<10000; $b++) {
    $mc->method1();
}
$end = microtime(true);
echo $end - $start . "<br />\n";

输出:
0.0040628910064697
0.0082359313964844