我知道这根本不会引起注意,只是为了学习,有没有调用类方法调用类属性的开销,就像我在下面的例子中显示$ 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());
答案 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