В 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
Я знаю, что фактическое время все еще ничтожно, если только я не звоню что-то миллион раз, но дело в том, что оно есть.
Кто-нибудь захочет попытаться объяснить, что происходит за кулисами?
Обновить:
- добавлен объект метод стенд