3v4l.org

run code in 500+ PHP versions simultaneously
<?php $before = [ 'name' => 'Bertie', 'age' => '23' ]; $after = [ 'name' => 'Harold', 'age' => '23', 'occupation' => 'Bus driver' ]; function changed_1($after, $before) { return array_diff_assoc($after, $before); } function changed_2($after, $before) { $changed = []; foreach($after as $k => $v) { if(isset($before[$k]) && $before[$k] !== $v) $changed[$k] = $v; if(!isset($before[$k])) $changed[$k] = $v; } return $changed; } var_export(changed_1($after, $before)); var_export(changed_2($after, $before)); /* Output: array ( 'name' => 'Harold', 'occupation' => 'Bus driver', )array ( 'name' => 'Harold', 'occupation' => 'Bus driver', ) */ // 26 * 26 * 6 = 4056, aA1 aA2 aB1 foreach(range('a', 'z') as $char1) foreach(range('A', 'Z') as $char2) foreach(range('1', '5') as $char3) { $key = $char1 . $char2 . $char3; $data1[$key] = $char1 . $char2 . $char3; $data2[$key] = $char1 . $char3 . $char2; } prof_flag('changed_1'); changed_1($data2, $data1); prof_flag('changed_2'); changed_2($data2, $data1); prof_flag("Done"); prof_print(); // SO TimH https://stackoverflow.com/a/29022400/3392762 function prof_flag($str) { global $prof_timing, $prof_names; $prof_timing[] = microtime(true); $prof_names[] = $str; } // Call this when you're done and want to see the results function prof_print() { global $prof_timing, $prof_names; $size = count($prof_timing); for($i=0;$i<$size - 1; $i++) { echo "<b>{$prof_names[$i]}</b><br>"; echo sprintf("&nbsp;&nbsp;&nbsp;%f<br>", $prof_timing[$i+1]-$prof_timing[$i]); } echo "<b>{$prof_names[$size-1]}</b><br>"; }

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.5.30.0130.00917.59
8.3.20.0160.00625.66
8.3.10.0140.00725.66
8.3.00.0080.01225.66
8.2.150.0130.00325.66
8.2.140.0100.00725.66
8.2.130.0100.00725.66
8.2.120.0170.00725.66
8.2.110.0040.01225.66
8.2.100.0080.00825.66
8.2.90.0100.01325.66
8.2.80.0100.01325.66
8.2.70.0100.01325.66
8.2.60.0100.01325.66
8.2.50.0120.01225.66
8.2.40.0100.00725.66
8.2.30.0130.01025.66
8.2.20.0060.01325.66
8.2.10.0070.01025.66
8.2.00.0160.00025.66
8.1.270.0040.01225.66
8.1.260.0090.00625.66
8.1.250.0150.00025.66
8.1.240.0130.00325.66
8.1.230.0060.01025.66
8.1.220.0130.00325.66
8.1.210.0150.00325.66
8.1.200.0060.00925.66
8.1.190.0120.00325.66
8.1.180.0140.00325.66
8.1.170.0160.00025.66
8.1.160.0160.00325.66
8.1.150.0040.01525.66
8.1.140.0090.01525.66
8.1.130.0140.00325.66
8.1.120.0040.01225.66
8.1.110.0070.01125.66
8.1.100.0110.00825.66
8.1.90.0100.00725.66
8.1.80.0090.00625.66
8.1.70.0090.00625.66
8.1.60.0060.01025.66
8.1.50.0130.00325.66
8.1.40.0130.00325.66
8.1.30.0100.00725.66
8.1.20.0070.01025.66
8.1.10.0100.00725.66
8.1.00.0120.00425.66
8.0.300.0090.00625.66
8.0.290.0210.00725.66
8.0.280.0230.00625.66
8.0.270.0160.00025.66
8.0.260.0100.01625.66
8.0.250.0090.00625.66
8.0.240.0190.00925.66
8.0.230.0100.01425.66
8.0.220.0040.01625.66
8.0.210.0230.00525.66
8.0.200.0140.00625.66
8.0.190.0180.00925.66
8.0.180.0100.00725.66
8.0.170.0250.00325.66
8.0.160.0030.01325.66
8.0.150.0150.01225.66
8.0.140.0250.00325.66
8.0.130.0250.01225.66
8.0.120.0230.00625.66
8.0.110.0170.00725.66
8.0.100.0140.01825.66
8.0.90.0210.01425.66
8.0.80.0130.00625.66
8.0.70.0100.00625.66
8.0.60.0210.00625.66
8.0.50.0210.00725.66
8.0.30.0040.01225.66
8.0.20.0100.00725.66
8.0.10.0270.00425.66
8.0.00.0160.00425.66
7.4.330.0170.00825.66
7.4.320.0240.00725.66
7.4.300.0280.00425.66
7.4.290.0170.01425.66
7.4.280.0290.00725.66
7.4.270.0310.00625.66
7.4.260.0250.00625.66
7.4.250.0240.00925.66
7.4.240.0310.00025.66
7.4.230.0260.00525.66
7.4.220.0240.00725.66
7.4.210.0240.00925.66
7.4.200.0310.00025.66
7.4.190.0230.00925.66
7.4.180.0370.00925.66
7.4.160.0210.01025.66
7.4.150.0260.01325.66
7.4.140.0250.01125.66
7.4.130.0260.01025.66
7.4.120.0210.01025.66
7.4.110.0240.00625.66
7.4.100.0290.00725.66
7.4.90.0320.00625.66
7.4.80.0350.00725.66
7.4.70.0170.02125.66
7.4.60.0270.01025.66
7.4.50.0230.00825.66
7.4.40.0180.01125.66
7.4.30.0260.00425.66
7.4.20.0190.01125.66
7.4.10.0170.01425.66
7.4.00.0160.00920.66
7.3.330.0230.00625.66
7.3.320.0240.00525.66
7.3.310.0250.00525.66
7.3.300.0220.00925.66
7.3.290.0230.00625.66
7.3.280.0160.01325.66
7.3.270.0230.00625.66
7.3.260.0190.01525.66
7.3.250.0180.01125.66
7.3.240.0180.02125.66
7.3.230.0320.00625.66
7.3.220.0260.00425.66
7.3.210.0420.00025.66
7.3.200.0410.00325.66
7.3.190.0260.00625.66
7.3.180.0280.00325.66
7.3.170.0190.00925.66
7.3.160.0250.00625.66
7.3.150.0270.00425.66
7.3.140.0150.01525.66
7.3.130.0250.00625.66
7.3.120.0120.01420.55
7.3.110.0130.01320.58
7.3.100.0140.01120.72
7.3.90.0200.01020.64
7.3.80.0210.00820.83
7.3.70.0140.01220.69
7.3.60.0150.01220.75
7.3.50.0190.01020.52
7.3.40.0180.00920.65
7.3.30.0180.01120.71
7.3.20.0200.01321.18
7.3.10.0220.00921.14
7.3.00.0150.00921.21
7.2.340.0220.00925.66
7.2.330.0200.01225.66
7.2.320.0310.00025.66
7.2.310.0230.00825.66
7.2.300.0230.01325.66
7.2.290.0260.01125.66
7.2.280.0340.00425.66
7.2.270.0230.01325.66
7.2.260.0250.01125.66
7.2.250.0180.01220.88
7.2.240.0210.00820.95
7.2.230.0210.00920.76
7.2.220.0200.01220.66
7.2.210.0190.01320.74
7.2.200.0220.00620.90
7.2.190.0180.01220.78
7.2.180.0150.01720.73
7.2.170.0200.00520.77
7.2.160.0250.00525.66
7.2.150.0230.00625.66
7.2.140.0200.01025.66
7.2.130.0250.00525.66
7.2.120.0280.01425.66
7.2.110.0140.01425.66
7.2.100.0250.00425.66
7.2.90.0260.00325.66
7.2.80.0250.00625.66
7.2.70.0350.00725.66
7.2.60.0190.00925.66
7.2.50.0280.01425.66
7.2.40.0550.01122.29
7.2.30.0600.01022.23
7.2.20.0540.01422.29
7.2.10.0460.01222.20
7.2.00.0580.01522.30
7.1.330.0190.00920.88
7.1.320.0160.00620.63
7.1.310.0110.01220.70
7.1.300.0080.01220.75
7.1.290.0110.01120.65
7.1.280.0070.01620.73
7.1.270.0120.00920.71
7.1.260.0150.00620.69
7.1.250.0720.00625.66
7.1.240.0240.01425.66
7.1.230.0250.00925.66
7.1.220.0220.01125.66
7.1.210.0210.01125.66
7.1.200.0240.00325.66
7.1.190.0290.00325.66
7.1.180.0210.01225.66
7.1.170.0240.00825.66
7.1.160.0570.00921.66
7.1.150.0570.00921.82
7.1.140.0540.00921.78
7.1.130.0480.01021.57
7.1.120.0510.01121.51
7.1.110.0470.00921.41
7.1.100.0540.01021.29
7.1.90.0610.00921.20
7.1.80.0560.00821.38
7.1.70.0420.01020.92
7.1.60.0610.01130.00
7.1.50.0610.01129.77
7.1.40.0540.00729.59
7.1.30.0420.01529.72
7.1.20.0540.01229.72
7.1.10.0530.01220.67
7.1.00.0490.00920.72
7.0.330.0230.00325.66
7.0.320.0210.00925.66
7.0.310.0230.00325.66
7.0.300.0150.01125.66
7.0.290.0250.01325.66
7.0.280.0160.01125.66
7.0.270.0270.01025.66
7.0.260.0150.02125.66
7.0.250.0260.00925.66
7.0.240.0280.00725.66
7.0.230.0280.00725.66
7.0.220.0160.01925.66
7.0.210.0240.00625.66
7.0.200.0190.00625.66
7.0.190.0200.00725.66
7.0.180.0230.00425.66
7.0.170.0280.00025.66
7.0.160.0230.00425.66
7.0.150.0150.01125.66
7.0.140.0210.00625.66
7.0.130.0130.01325.66
7.0.120.0220.00425.66
7.0.110.0180.00625.66
7.0.100.0120.00825.66
7.0.90.0120.00325.66
7.0.80.0070.01325.66
7.0.70.0120.00325.66
7.0.60.0060.00925.66
7.0.50.0110.00425.66
7.0.40.0080.00825.66
7.0.30.0030.01225.66
7.0.20.0250.00025.66
7.0.10.0210.00325.66
7.0.00.0150.00025.66
5.6.400.0310.06325.66
5.6.390.0230.07025.66
5.6.380.0070.06825.66
5.6.370.0160.06025.66
5.6.360.0130.06225.66
5.6.350.0200.06325.66
5.6.340.0130.06225.66
5.6.330.0180.07125.66
5.6.320.0160.05825.66
5.6.310.0100.06625.66
5.6.300.0130.06025.66
5.6.290.0160.06225.66
5.6.280.0190.08125.66
5.6.270.0210.06325.66
5.6.260.0170.05725.66
5.6.250.0140.06125.66
5.6.240.0130.06325.66
5.6.230.0140.06025.66
5.6.220.0100.06625.66
5.6.210.0170.05825.66
5.6.200.0190.07025.66
5.6.190.0140.08625.66
5.6.180.0200.06225.66
5.6.170.0260.06525.66
5.6.160.0070.07025.66
5.6.150.0290.04825.66
5.6.140.0310.04925.66
5.6.130.0230.05525.66
5.6.120.0230.05825.66
5.6.110.0190.07525.66
5.6.100.0240.05825.66
5.6.90.0160.06225.66
5.6.80.0190.06825.66
5.6.70.0250.05925.66
5.6.60.0160.06825.66
5.6.50.0230.04825.66
5.6.40.0160.05625.66
5.6.30.0160.05925.66
5.6.20.0190.05125.66
5.6.10.0140.05925.66
5.6.00.0170.06325.66

preferences:
40.34 ms | 1772 KiB | 5 Q