Wydajność metod statycznych a funkcje

W PHP (w przeciwieństwie do tego, co pierwotnie myślałem) istnieje narzut nakładania metod statycznych na proste funkcje.

Na bardzo prostym stanowisku obciążenie wynosi ponad 30% czasu wywołania (metoda po prostu zwraca parametr):

// 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";

wyjścia:

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

Wiem, że rzeczywisty czas jest nadal nieistotny, chyba że faktycznie dzwonię za milion razy, ale faktem jest, że tam jest.

Czy ktoś zechce spróbować wyjaśnić, co dzieje się za kulisami?

aktualizacja:
- dodano ławkę metod obiektu

questionAnswers(6)

yourAnswerToTheQuestion