Realización de métodos estáticos vs. funciones.

En PHP, (a diferencia de lo que originalmente pensé) hay una sobrecarga de llamar métodos estáticos frente a funciones simples.

En un banco muy simple, la sobrecarga es más del 30% del tiempo de llamada (el método simplemente devuelve el 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";

salidas:

Static Time:   0.640204906464 ms
Object Time:   0.48961687088 ms
Function Time: 0.438289880753 ms

Sé que el tiempo real todavía es insignificante a menos que esté llamando algo 1 millón de veces, pero el hecho es que está ahí.

¿Le importará a alguien intentar explicar lo que está sucediendo detrás de escena?

actualizar:
- Banco de método de objeto añadido.

Respuestas a la pregunta(6)

Su respuesta a la pregunta