3v4l.org

run code in 300+ PHP versions simultaneously
<?php function run_test($name, $callback, $iterations) { $start = microtime(true); for ($i = 0; $i < $iterations; $i++) { $result = $callback(); } $stop = microtime(true); $delta = $stop - $start; echo "ran '$name' with result ", var_export($result, true), " in $delta msecs\n"; } class Foo { } class Bar { function setup() {} } $method1 = function($test) { return function () use ($test) { if (method_exists($test, 'setup')) { $test->setup(); } }; }; $method2 = function($test) { $func = method_exists($test, 'setup') ? function() use ($test) { $test->setup(); } : function () {}; return function () use ($func) { $func(); }; }; $method3 = function($test) { $test = method_exists($test, 'setup') ? [$test, 'setup'] : function () {}; return function () use ($test) { $test(); }; }; const ITERATIONS = 1000; run_test('foo1', $method1(new Foo()), ITERATIONS); run_test('bar1', $method1(new Bar()), ITERATIONS); run_test('foo2', $method2(new Foo()), ITERATIONS); run_test('bar2', $method2(new Bar()), ITERATIONS); run_test('foo3', $method3(new Foo()), ITERATIONS); run_test('bar3', $method3(new Bar()), ITERATIONS);

preferences:
35.77 ms | 402 KiB | 5 Q