$items = range(0, 10); // $timingStart = microtime(true); $memoryStart = memory_get_usage(true); $peakStart = memory_get_peak_usage(true); for ($iterations = 0; $iterations < PHP_INT_MAX; $iterations++) { // $even = []; foreach ($items as $item) { if ($item % 2 === 0) { $even[] = $item; } } // // Timing control: if ($iterations % 1000 === 0 && microtime(true) - $timingStart >= EXECUTION_TIME) { break; } } $timingDuration = microtime(true) - $timingStart; $memoryEnd = memory_get_usage(true); $memoryUsage = $memoryEnd - $memoryStart; $peakEnd = memory_get_peak_usage(true); $peakUsage = $peakEnd - $peakStart; echo "\n\n"; printf("Cycles count : %.2f\n", $iterations); printf("Cycles by min. : %.2f\n", 60 / $timingDuration * $iterations); printf("Total time : %.2f sec.\n", $timingDuration); printf("Memory usage : %.2f MB (on end) - %.2f MB (on start) = %.2f MB (delta)\n", $memoryEnd / 1048576, $memoryStart / 1048576, $memoryUsage / 1048576); printf("Memory peak : %.2f MB (on end) - %.2f MB (on start) = %.2f MB (delta)\n\n\n", $peakEnd / 1048576, $peakStart / 1048576, $peakUsage / 1048576);