Desempenho de métodos estáticos vs. funções
No PHP, (ao contrário do que eu pensava inicialmente), existe uma sobrecarga de chamar métodos estáticos versus funções simples.
Em um banco muito simples, a sobrecarga é superior a 30% do tempo de chamada (o método apenas retorna o parâmetro):
// 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";
saídas:
Static Time: 0.640204906464 ms
Object Time: 0.48961687088 ms
Function Time: 0.438289880753 ms
Eu sei que o tempo real ainda é insignificante a menos que eu realmente esteja chamando algo 1 milhão de vezes, mas o fato é que está lá.
Alguém se importará em tentar explicar o que está acontecendo nos bastidores?
atualizar:
- banco de método de objeto adicionado