В моих тестах разницы практически нет:

Таким образом, статические вызовы немного медленнее динамических, а динамические - немного медленнее глобальных функций.
<?php
function pre_defined($v1, $v2) {
return $v1 + $v2;
}
$anonymous = function($v1, $v2) {
return $v1 + $v2;
};
$create_function = create_function('$v1, $v2', 'return $v1 + $v2;');
class StaticFunction {
public static function test($v1, $v2) {
return $v1 + $v2;
}
}
class DynamicFunction {
public function test($v1, $v2) {
return $v1 + $v2;
}
}
$dynamic = new DynamicFunction();
$v1 = 1;
$v2 = 2;
$iterations = 1000;
Performance\BenchmarkManager::add_group('Function call', new Performance\BenchmarkGroup(array(
'benchmarks' => array(
'empty loop' => function() use($iterations, $v1, $v2) {
for ($i = 0; $i < $iterations; $i++) {
}
},
'native reference point' => function() use($iterations, $v1, $v2) {
for ($i = 0; $i < $iterations; $i++) {
$result = $v1 + $v2;
}
},
'pre defined' => function() use($iterations, $v1, $v2) {
for ($i = 0; $i < $iterations; $i++) {
$result = pre_defined($v1, $v2);
}
},
'anonymous' => function() use($iterations, $v1, $v2, $anonymous) {
for ($i = 0; $i < $iterations; $i++) {
$anonymous($v1, $v2);
}
},
'create_function' => function() use($iterations, $v1, $v2, $create_function) {
for ($i = 0; $i < $iterations; $i++) {
$create_function($v1, $v2);
}
},
'eval' => function() use($iterations, $v1, $v2) {
for ($i = 0; $i < $iterations; $i++) {
eval('$result = $v1 + $v2;');
}
},
'static' => function() use($iterations, $v1, $v2) {
for ($i = 0; $i < $iterations; $i++) {
StaticFunction::test($v1, $v2);
}
},
'dynamic' => function() use($iterations, $v1, $v2, $dynamic) {
for ($i = 0; $i < $iterations; $i++) {
$dynamic->test($v1, $v2);
}
},
),
)));