<?php
class A {
function foo($a, $b) {}
}
$object = new A;
$t = microtime (true);
for ($i=0; $i<1000; $i++) {
call_user_func_array(array($object, 'foo'), array(1, 'foo'));
}
echo '1000 x call_user_func_array: '.round((microtime(true)-$t)*1000, 2)." ms\n";
$t = microtime (true);
$ref = new ReflectionMethod($object, 'foo');
for ($i=0; $i<1000; $i++) {
$ref->invokeArgs($object, array(1, 'foo'));
}
echo '1000 x ReflectionMethod::invokeArgs: '.round((microtime(true)-$t)*1000, 2)." ms\n";
$t = microtime (true);
for ($j=0; $j<100; $j++) {
$ref = new ReflectionMethod($object, 'foo');
for ($i=0; $i<10; $i++) {
$ref->invokeArgs($object, array(1, 'foo'));
}
}
echo '100 x (10 x ReflectionMethod::invokeArgs): '.round((microtime(true)-$t)*1000, 2)." ms\n";
preferences:
28.37 ms | 402 KiB | 5 Q