静态方法与函数的性能
2022-08-30 09:06:44
在PHP中,(与我最初的想法不同)调用静态方法与简单函数之间存在开销。
在一个非常简单的工作台上,开销超过调用时间的30%(该方法只返回参数):
// bench static method
$starttime = microtime(true);
for ($i = 0; $i< 10*1000*1000; $i++)
SomeClass::doTest($i);
echo "Static Time: " , (microtime(true)-$starttime) , " ms\n";
// bench object method
$starttime = microtime(true);
for ($i = 0; $i< 10*1000*1000; $i++)
$someObj->doTest($i);
echo "Object Time: " , (microtime(true)-$starttime) , " ms\n";
// bench function
$starttime = microtime(true);
for ($i = 0; $i< 10*1000*1000; $i++)
something_doTest($i);
echo "Function Time: " , (microtime(true)-$starttime) , " ms\n";
输出:
Static Time: 0.640204906464 ms
Object Time: 0.48961687088 ms
Function Time: 0.438289880753 ms
我知道实际时间仍然可以忽略不计,除非我实际上拨打了100万次,但事实是它在那里。
有人会愿意尝试解释幕后发生的事情吗?
更新:
- 添加了对象方法工作台