En PHP, (contrairement à ce que je pensais au début) il y a une surcharge de l'appel de méthodes statiques vs les fonctions simples.
Sur un simple banc, cette charge est de plus de 30% du temps d'appel (la méthode retourne le paramètre):
// 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";
sorties:
Static Time: 0.640204906464 ms
Object Time: 0.48961687088 ms
Function Time: 0.438289880753 ms
Je sais que le temps réel est encore négligeable, à moins que je me suis fait appel à quelque chose de 1 million de fois, mais le fait est qu'il est là.
Quelqu'un soin pour essayer d'expliquer ce qui se passe derrière les coulisses?
mise à jour:
ajoutée, méthode de l'objet de banc