3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Test { private $arguments = array(1,2,3); public function foo() { $closureToCall = 'max'; //this function accepts multiple args $start = microtime(true); for ($i=0; $i<1e5; $i++) { $args = $this->arguments; switch (count($args)) { case 0: $closureToCall(); case 1: $closureToCall($args[0]); case 2: $closureToCall($args[0], $args[1]); case 3: $closureToCall($args[0], $args[1], $args[2]); case 4: $closureToCall($args[0], $args[1], $args[2], $args[3]); case 5: $closureToCall($args[0], $args[1], $args[2], $args[3], $args[4]); default: forward_static_call_array($closureToCall, $args); } } $end = microtime(true); echo "Took: ", ($end-$start)*1e3, " ms"; $start = microtime(true); for ($i=0; $i<1e5; $i++) { $args = $this->arguments; $closureToCall(...$args); } $end = microtime(true); echo "Took: ", ($end-$start)*1e3, " ms"; } } $obj = new Test; $obj->foo();

preferences:
24.15 ms | 402 KiB | 5 Q