Benchmark PHP: call_user_func vs direct method call

Estuve probando un script de benchmark de Rob Allen y la verdad que afirmo lo que sospecha y sabia

1) call_user_func consume 2 veces mas de tiempo que llamando directamente al método

2) Un código corrido en php 5.3 es mas eficiente que el mismo código corrido en PHP 5.2

Les dejo el código de Rob con una pequeña modificación, si pueden corran el script en distintas versiones de PHP, pero ojo!! córranlo en la misma pc porque sino las pruebas no serán objetivas.


<?php
class A
{
    function b($a)
    {
        return;
    }
}

define ('ITERATIONS', 10000000);
$start = microtime(true);
$a = new A();
for ($i = 0; $i < ITERATIONS; ++$i) {
   $a->b(1);
}
$stop = microtime(true);
echo  'Direct method call: ' . ($stop - $start) . ' seconds' . PHP_EOL;

$start = microtime(true);
$b = 'b';
for ($i = 0; $i < ITERATIONS; ++$i) {
   $a->$b(1);
}
$stop = microtime(true);
echo  'Direct method variable call: ' . ($stop - $start) . ' seconds' . PHP_EOL;

$start = microtime(true);
for ($i = 0; $i < ITERATIONS; ++$i) {
   call_user_func_array(array($a, 'b'), array(1));
}
$stop = microtime(true);
echo  'call_user_func_array call: ' . ($stop - $start) . ' seconds' . PHP_EOL;