3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(E_ALL); function test() {} $nIter = 1000000; $argNums = [0, 1, 2, 3, 4, 5, 100]; $func = 'test'; foreach ($argNums as $argNum) { $args = $argNum == 0 ? [] : array_fill(0, $argNum, null); $startTime = microtime(true); for ($i = 0; $i < $nIter; ++$i) { call_user_func_array($func, $args); } $endTime = microtime(true); echo "cufa with $argNum args took ", $endTime - $startTime, "\n"; $startTime = microtime(true); for ($i = 0; $i < $nIter; ++$i) { switch (count($args)) { case 0: $func(); break; case 1: $func($args[0]); break; case 2: $func($args[0], $args[1]); break; case 3: $func($args[0], $args[1], $args[2]); break; case 4: $func($args[0], $args[1], $args[2], $args[3]); break; case 5: $func($args[0], $args[1], $args[2], $args[3], $args[4]); break; default: call_user_func_array($func, $args); break; } } $endTime = microtime(true); echo "switch with $argNum args took ", $endTime - $startTime, "\n"; $startTime = microtime(true); for ($i = 0; $i < $nIter; ++$i) { $func(...$args); } $endTime = microtime(true); echo "unpack with $argNum args took ", $endTime - $startTime, "\n"; }

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.0.100.0131.99016.91
8.0.90.0002.00316.80
8.0.80.0002.00316.98
8.0.70.0002.00216.80
8.0.60.0031.99816.80
8.0.50.0031.99916.64
8.0.30.0101.99316.76
8.0.20.0101.99416.86
8.0.10.0081.99417.01
8.0.00.0131.98916.94
7.4.230.0071.99716.52
7.4.220.0002.00316.34
7.4.210.0032.00016.40
7.4.200.0071.99516.32
7.4.190.0031.99916.59
7.4.180.0101.98816.67
7.4.160.0081.99416.59
7.4.150.0051.99616.44
7.4.140.0171.98516.46
7.4.130.0111.98816.48
7.4.120.0081.99216.50
7.4.110.0051.99816.44
7.4.100.0032.00016.40
7.4.90.0071.99616.43
7.4.80.0031.99916.49
7.4.70.0071.99416.46
7.4.60.0052.00016.47
7.4.50.0101.99116.43
7.4.40.0071.99716.41
7.4.30.0031.99916.47
7.4.20.0151.98616.30
7.4.10.0031.99616.43
7.4.00.0151.98616.50
7.3.300.0032.00016.29
7.3.290.0071.99616.26
7.3.280.0002.00216.15
7.3.270.0081.99516.24
7.3.260.0131.98016.27
7.3.250.0111.99316.24
7.3.240.0111.99116.32
7.3.230.0121.99116.21
7.3.220.0051.99516.19
7.3.210.0061.99716.28
7.3.200.0071.99616.22
7.3.190.0051.99616.08
7.3.180.0071.99516.21
7.3.170.0071.99616.12
7.3.160.0071.99516.17
7.3.150.0121.99416.25
7.3.140.0121.98616.27
7.3.130.0081.99616.21
7.3.120.0031.99816.21
7.3.110.0111.99116.19
7.3.100.0081.99616.21
7.3.90.0121.99316.44
7.3.80.0061.99616.24
7.3.70.0051.99916.34
7.3.60.0071.99616.45
7.3.50.0101.99616.31
7.3.40.0081.99316.44
7.3.30.0051.99716.30
7.3.20.0131.98316.42
7.3.10.0081.98516.24
7.3.00.0101.99316.30
7.2.340.0051.99316.38
7.2.330.0111.99316.41
7.2.320.0081.99516.46
7.2.310.0071.99516.42
7.2.300.0071.99516.40
7.2.290.0071.99616.32
7.2.280.0081.99216.40
7.2.270.0071.99816.32
7.2.260.0081.99616.44
7.2.250.0111.99116.42
7.2.240.0081.99116.33
7.2.230.0051.99716.37
7.2.220.0081.98616.41
7.2.210.0061.99716.34
7.2.200.0081.99216.58
7.2.190.0051.99916.48
7.2.180.0121.99216.50
7.2.170.0081.99216.62
7.2.160.0121.99216.50
7.2.150.0121.98616.63
7.2.140.0161.98616.69
7.2.130.0081.99716.75
7.2.120.0081.99716.74
7.2.110.0162.08716.17
7.2.100.0101.99216.67
7.2.90.0081.99416.64
7.2.80.0131.99116.69
7.2.70.0121.98716.65
7.2.60.0071.99716.66
7.2.50.0101.99316.59
7.2.40.0131.99116.73
7.2.30.0051.99916.72
7.2.20.0051.99516.59
7.2.10.0051.99716.66
7.2.00.0071.99516.74
7.1.330.0101.99115.68
7.1.320.0131.98815.68
7.1.310.0071.99615.55
7.1.300.0071.99615.59
7.1.290.0081.99815.60
7.1.280.0071.99515.54
7.1.270.0071.99815.57
7.1.260.0022.00015.55
7.1.250.0101.99215.44
7.1.240.0161.98615.53
7.1.230.1032.04115.03
7.1.220.1052.03514.95
7.1.210.0111.99015.52
7.1.200.0071.99915.58
7.1.190.0111.98715.54
7.1.180.0071.99515.54
7.1.170.0101.99315.45
7.1.160.0081.99615.44
7.1.150.0081.99915.45
7.1.140.0071.99415.55
7.1.130.0031.99715.43
7.1.120.0071.99415.50
7.1.110.0071.99615.50
7.1.100.0061.99715.46
7.1.90.0071.99315.49
7.1.80.0051.99815.51
7.1.70.0071.99415.42
7.1.60.0081.99315.62
7.1.50.0101.99015.49
7.1.40.0271.97815.51
7.1.30.0161.97215.57
7.1.20.0181.95515.49
7.1.10.0211.97815.56
7.1.00.0111.99015.35
7.0.330.0081.99615.21
7.0.320.0151.98815.33
7.0.310.0151.98615.15
7.0.300.0201.98115.24
7.0.290.0131.98915.37
7.0.280.0181.98515.26
7.0.270.0211.98215.31
7.0.260.0201.97415.30
7.0.250.0141.98115.41
7.0.240.0131.98315.43
7.0.230.0261.97415.50
7.0.220.0131.99015.30
7.0.210.0131.98615.43
7.0.200.0121.98615.41
7.0.190.0181.97415.40
7.0.180.0231.98615.33
7.0.170.0241.96515.47
7.0.160.0251.95715.37
7.0.150.0571.94215.26
7.0.140.0491.94815.30
7.0.130.0111.99015.35
7.0.120.0101.99615.40
7.0.110.0141.95615.27
7.0.100.0111.99215.38
7.0.90.0131.99215.29
7.0.80.0171.98415.21
7.0.70.0301.96615.26
7.0.60.0161.98315.32
7.0.50.0101.99015.19
7.0.40.0211.97315.34
7.0.30.0151.98315.41
7.0.20.0121.98715.24
7.0.10.0201.97715.40
7.0.00.0131.99215.32
5.6.400.0131.98815.89
5.6.390.0081.99415.99
5.6.380.0122.13315.28
5.6.370.0081.99715.98
5.6.360.0091.99115.93
5.6.350.0181.98415.87
5.6.340.0321.96515.85
5.6.330.0251.97515.85
5.6.320.0101.99115.90
5.6.310.0051.99515.97
5.6.300.0191.97815.75
5.6.290.0151.98415.94
5.6.280.0151.99015.98
5.6.270.0101.99115.91
5.6.260.0221.97215.88
5.6.250.0121.96915.83
5.6.240.0101.99416.05
5.6.230.0331.98416.13
5.6.220.0131.98016.07
5.6.210.0081.99715.96
5.6.200.0211.97916.16
5.6.190.0161.98016.25
5.6.180.0141.98616.16
5.6.170.0121.98116.06
5.6.160.0111.98516.14
5.6.150.0161.98916.08
5.6.140.0101.99716.09
5.6.130.0121.99116.04
5.6.120.0051.99516.07
5.6.110.0151.99116.00
5.6.100.0091.99315.87
5.6.90.0271.97015.79
5.6.80.0181.98515.78
5.6.70.0111.99616.15
5.6.60.0051.99616.07
5.6.50.0161.98315.99
5.6.40.0131.98716.04
5.6.30.0121.98916.00
5.6.20.0161.98715.94
5.6.10.0071.99815.90
5.6.00.0101.99315.90
5.5.380.0150.00415.75
5.5.370.0120.00615.61
5.5.360.0090.00915.51
5.5.350.0140.00415.53
5.5.340.0080.01015.51
5.5.330.0160.00115.56
5.5.320.0090.00915.48
5.5.310.0100.00715.46
5.5.300.0140.00415.39
5.5.290.0120.00715.50
5.5.280.0130.00615.48
5.5.270.0070.01215.50
5.5.260.0120.00715.45
5.5.250.0110.00815.59
5.5.240.0100.00715.55
5.5.230.0140.00115.58
5.5.220.0110.00715.55
5.5.210.0100.00715.59
5.5.200.0140.00215.46
5.5.190.0130.00615.42
5.5.180.0160.00015.40
5.5.170.0150.00115.43
5.5.160.0190.00415.42
5.5.150.0090.00715.37
5.5.140.0110.00715.45
5.5.130.0100.00515.21
5.5.120.0100.00515.28
5.5.110.0110.00515.33
5.5.100.0120.00615.54
5.5.90.0120.00415.56
5.5.80.0050.01015.56
5.5.70.0100.00515.47
5.5.60.0080.00615.65
5.5.50.0070.00715.50
5.5.40.0080.00615.46
5.5.30.0060.00815.61
5.5.20.0070.00815.58
5.5.10.0080.00615.34
5.5.00.0120.00315.38
5.4.450.0080.00412.44
5.4.440.0080.00612.37
5.4.430.0060.00912.48
5.4.420.0100.00612.44
5.4.410.0090.00312.32
5.4.400.0060.00612.32
5.4.390.0070.00712.45
5.4.380.0040.01012.36
5.4.370.0090.00412.39
5.4.360.0060.00612.38
5.4.350.0080.00512.39
5.4.340.0110.00212.42
5.4.330.0110.00412.31
5.4.320.0080.00612.44
5.4.310.0040.00812.38
5.4.300.0090.00412.50
5.4.290.0080.00612.40
5.4.280.0070.00612.42
5.4.270.0100.00412.43
5.4.260.0090.00512.41
5.4.250.0110.00712.42
5.4.240.0070.00612.32
5.4.230.0100.00212.18
5.4.220.0110.00112.25
5.4.210.0110.00012.10
5.4.200.0090.00312.21
5.4.190.0110.01612.33
5.4.180.0120.01512.26
5.4.170.0110.01812.26
5.4.160.0140.01512.34
5.4.150.0120.01612.29
5.4.140.0130.02512.30
5.4.130.0110.01712.35
5.4.120.0100.01912.23
5.4.110.0100.01912.27
5.4.100.0120.01712.29
5.4.90.0130.01612.29
5.4.80.0120.02012.34
5.4.70.0130.01612.29
5.4.60.0090.01912.31
5.4.50.0120.01512.18
5.4.40.0120.01512.30
5.4.30.0200.02912.26
5.4.20.0130.01512.27
5.4.10.0080.02012.32
5.4.00.0110.01711.99
5.3.290.0060.00912.99
5.3.280.0090.00312.72
5.3.270.0130.01512.78
5.3.260.0110.01812.70
5.3.250.0150.01512.75
5.3.240.0110.01712.70
5.3.230.0120.01912.69
5.3.220.0120.01912.68
5.3.210.0120.01812.76
5.3.200.0100.02012.71
5.3.190.0130.01812.74
5.3.180.0090.02012.80
5.3.170.0100.01912.81
5.3.160.0100.01812.85
5.3.150.0130.03612.76
5.3.140.0100.02012.73
5.3.130.0120.01812.78
5.3.120.0170.02012.70
5.3.110.0120.01812.79
5.3.100.0090.02012.63
5.3.90.0140.03412.67
5.3.80.0100.01912.53
5.3.70.0110.01712.56
5.3.60.0130.01612.56
5.3.50.0100.01912.50
5.3.40.0140.02612.63
5.3.30.0100.02012.51
5.3.20.0110.01812.44
5.3.10.0110.02812.30
5.3.00.0170.01712.29

preferences:
42.08 ms | 401 KiB | 5 Q