3v4l.org

run code in 500+ PHP versions simultaneously
<?php class Benchmark { private int $startTime; private int $endTime; public function start() { $this->startTime = hrtime(true); } public function end() { $this->endTime = hrtime(true); } public function getElapsedTime() { return round(($this->endTime - $this->startTime) / 1_000_000_000, 8); } } // Example usage $benchmark = new Benchmark(); // ==================================== // PREPARE TEST DATA function getData():array { return $people = array( array('name' => 'Kalle', 'salt' => 856412), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863), array('name' => 'Pierre', 'salt' => 215863) ); } // ==================================== $memory = memory_get_usage(); echo "Initial memory usage: " . ($memory / 1024) . " KB\n"; $benchmark->start(); // Code to benchmark $people = getData(); for ($benchIndex = 0; $benchIndex < 50000; $benchIndex++) { for($i = 0; $i < count($people); ++$i) { $people[$i]['salt'] = rand(1, 1000000); } // for($j = 0, $size = count($people); $j < $size; ++$j) { // $people[$j]['salt'] = rand(1, 1000000); // } } $benchmark->end(); $time1 = $benchmark->getElapsedTime(); echo "Elapsed time: " . $time1 . " seconds\n"; $memory = memory_get_usage(); echo "Memory usage after test 1: " . ($memory / 1024) . " KB\n"; echo "-----------------------------------\n"; $people = array( array('name' => 'Kalle', 'salt' => 856412), array('name' => 'Pierre', 'salt' => 215863) ); $memory = memory_get_usage(); echo "Initial memory usage: " . ($memory / 1024) . " KB\n"; $benchmark->start(); // Code to benchmark $people = getData(); for ($benchIndex = 0; $benchIndex < 50000; $benchIndex++) { for($j = 0, $size = count($people); $j < $size; ++$j) { $people[$j]['salt'] = rand(1, 1000000); } // for($i = 0; $i < count($people); ++$i) { // $people[$i]['salt'] = rand(1, 1000000); // } } $benchmark->end(); $time2 = $benchmark->getElapsedTime(); echo "Elapsed time: " . $time2 . " seconds\n"; $memory = memory_get_usage(); echo "Memory usage after test 2: " . ($memory / 1024) . " KB\n"; echo "Times faster: " . round($time1 / $time2, 2) . "x\n"; // assert($dates1 === $dates2, 'The two methods should produce the same result.' . var_export($dates1, true) . ' !== ' . var_export($dates2, true));

preferences:
49.83 ms | 802 KiB | 5 Q