3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Disable garbage collection to avoid interference gc_disable(); // Helper function to calculate execution time function benchmark(callable $function) { $start = microtime(true); $function(); $end = microtime(true); return $end - $start; } // Create a deeply nested array function createNestedArray($depth = 3, $width = 10) { $data = []; for ($i = 0; $i < $width; $i++) { $data["level_$i"] = ($depth > 1) ? createNestedArray($depth - 1, $width) : rand(1, 100); } return $data; } // Create a deeply nested object function createNestedObject($depth = 3, $width = 10) { $obj = new stdClass(); for ($i = 0; $i < $width; $i++) { $propName = "level_$i"; $obj->$propName = ($depth > 1) ? createNestedObject($depth - 1, $width) : rand(1, 100); } return $obj; } // Function to modify data in nested array function modifyArray(&$data, $depth = 3) { foreach ($data as &$value) { if ($depth > 1 && is_array($value)) { modifyArray($value, $depth - 1); } else { $value *= 2; // Data alteration } } } // Function to modify data in nested object function modifyObject(&$obj, $depth = 3) { foreach ($obj as &$value) { if ($depth > 1 && is_object($value)) { modifyObject($value, $depth - 1); } else { $value *= 2; // Data alteration } } } // Initialize nested structures $depth = 3; $width = 10; $nestedArray = createNestedArray($depth, $width); $nestedObject = createNestedObject($depth, $width); // Benchmark for array $arrayTime = benchmark(function() use (&$nestedArray, $depth) { modifyArray($nestedArray, $depth); }); // Benchmark for object $objectTime = benchmark(function() use (&$nestedObject, $depth) { modifyObject($nestedObject, $depth); }); echo "Array Time: " . $arrayTime . " seconds\n"; echo "Object Time: " . $objectTime . " seconds\n"; gc_enable(); // Re-enable garbage collection ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.130.0400.00317.03
8.3.120.0260.01516.99
8.3.110.0390.00316.79
8.3.100.0380.01016.92
8.3.90.0320.01017.03
8.3.80.0320.00316.74
8.3.70.0330.00716.86
8.3.60.0390.01316.80
8.3.50.0360.00717.00
8.3.40.0240.01517.64
8.3.30.0230.00817.87
8.3.20.0300.01317.83
8.3.10.0370.00017.62
8.3.00.0190.00617.88
8.2.250.0270.00816.61
8.2.240.0240.01616.70
8.2.230.0370.00716.56
8.2.220.0220.00316.61
8.2.210.0160.00816.21
8.2.200.0130.00716.72
8.2.190.0190.00016.90
8.2.180.0110.00716.73
8.2.170.0230.00317.98
8.2.160.0310.00917.71
8.2.150.0340.01117.71
8.2.140.0320.00317.95
8.2.130.0350.00817.97
8.2.120.0390.00317.77
8.2.110.0280.01417.72
8.2.100.0250.01117.91
8.2.90.0220.02217.84
8.2.80.0400.00017.88
8.2.70.0320.01117.65
8.2.60.0260.01517.77
8.2.50.0290.01117.63
8.2.40.0300.00617.64
8.2.30.0230.00917.91
8.2.20.0230.01317.62
8.2.10.0280.01117.66
8.2.00.0330.00717.63
8.1.300.0330.01016.35
8.1.290.0300.01016.39
8.1.280.0300.00916.27
8.1.270.0300.00317.63
8.1.260.0180.01017.86
8.1.250.0290.01417.48
8.1.240.0210.00917.64
8.1.230.0160.00817.64
8.1.220.0130.00317.64
8.1.210.0250.01517.35
8.1.200.0220.00917.47
8.1.190.0340.00617.38
8.1.180.0440.01117.32
8.1.170.0260.01117.50
8.1.160.0330.00417.45
8.1.150.0230.01517.45
8.1.140.0290.00817.36
8.1.130.0200.01717.53
8.1.120.0230.00717.58
8.1.110.0160.00017.64
8.1.100.0120.00517.46
8.1.90.0230.01317.35
8.1.80.0260.00717.63
8.1.70.0260.00917.36
8.1.60.0310.00917.51
8.1.50.0280.01117.17
8.1.40.0340.00717.59
8.1.30.0290.01117.80
8.1.20.0290.01117.93
8.1.10.0360.00417.61
8.1.00.0230.01517.47

preferences:
32.15 ms | 403 KiB | 5 Q