3v4l.org

run code in 300+ PHP versions simultaneously
<?php $base = new DateTime("2000-03-04 00:00:00 Europe/Berlin"); $date = new DateTime("2016-09-07 00:00:00 Europe/Berlin"); $interval = new DateInterval('P5Y6M0D'); $ret = $date; $diff = $base->diff($date); // var_dump($diff); $iterations = 0; $y = $base->format('Y'); $m = $base->format('m'); $d = $base->format('d'); $h = $base->format('G'); $i = $base->format('i'); $s = $base->format('s'); if ($interval->y || $interval->m) { $monthDiff = $diff->y * 12 + $diff->m; $monthInterval = $interval->y * 12 + $interval->m; $iterations = ceil($monthDiff / $monthInterval); $y = $base->format('Y') + ($interval->y * $iterations); $m = $base->format('m') + ($interval->m * $iterations); echo "set y:{$y}, m:{$m}, iterations:{$iterations}\n"; } $modify = $diff->d - ($interval->d * $iterations); if ($modify > 0) { $y += $interval->y; $m += $interval->m; $iterations++; } $d += $interval->d * $iterations; echo "set y:{$y}, m:{$m}, d:{$d}, iterations:{$iterations}\n"; $modify = $diff->h - ($interval->h * $iterations); if ($modify > 0) { $y += $interval->y; $m += $interval->m; $d += $interval->d; $iterations++; } $h += $interval->h * $iterations; echo "set y:{$y}, m:{$m}, d:{$d}, h:{$h}, iterations:{$iterations}\n"; $ret->setDate($y, $m, $d); $ret->setTime($h, $i, $s); echo $ret->format("Y-m-d H:i:s") . "\n"; exit; if ($interval->y) { $y = $diff->y / $interval->y; if ($y) { $intervals = $y / $interval->y; $m = $interval->m * $intervals; $y -= floor($m / 12); $m -= floor($m / 12) * 12; $ret->setDate( $base->format('Y') + $y, $base->format('m') + $m, $base->format('d') ); /* $ret->setTime( $base->format('G') + ($interval->h * $intervals), $base->format('i') + ($interval->i * $intervals), $base->format('s') + ($interval->s * $intervals) ); */ } } var_dump($ret); exit; $intervalMonths = $interval->m ?: 12; $m = ceil($diff->m / $intervalMonths) * $intervalMonths; if ($interval->d) { $d = ceil($diff->d / $interval->d) * $interval->d; } else { $d = 0; } $intervalHours = $interval->h ?: 24; $intervalMinutes = $interval->i ?: 60; $intervalSeconds = $interval->s ?: 60; $h = ceil($diff->h / $intervalHours) * $intervalHours; $i = ($h) ? $interval->i : ceil($diff->i / $intervalMinutes) * $intervalMinutes; $s = ($h || $i) ? $interval->s : ceil($diff->s / $intervalSeconds) * $intervalSeconds; if ($interval->d) { $d = ceil($diff->d / $interval->d) * $interval->d; } if ($interval->m) { $m = ceil($diff->m / $interval->m) * $interval->m; } if ($interval->y) { $y = ceil($diff->y / $interval->y) * $interval->y; } $s += $base->format('s'); $i += $base->format('i'); $h += $base->format('G'); $d += $base->format('d'); $m += $base->format('m'); $y += $base->format('Y'); $ret->setTime($h, $i, $s); //$ret->setDate($y, $m, $d); return $ret;

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.60.0070.01418.43
8.3.50.0090.00922.04
8.3.40.0110.01119.10
8.3.30.0070.00719.26
8.3.20.0070.00020.34
8.3.10.0030.00521.94
8.3.00.0080.00019.11
8.2.180.0120.00918.24
8.2.170.0170.00722.96
8.2.160.0070.00722.13
8.2.150.0030.00624.18
8.2.140.0080.00024.66
8.2.130.0000.00826.16
8.2.120.0000.00820.87
8.2.110.0040.00422.20
8.2.100.0080.00319.44
8.2.90.0070.00319.47
8.2.80.0040.00518.00
8.2.70.0040.00418.00
8.2.60.0000.00818.29
8.2.50.0000.00818.07
8.2.40.0030.00618.47
8.2.30.0070.00018.34
8.2.20.0000.00718.10
8.2.10.0000.00818.16
8.2.00.0000.00718.00
8.1.280.0130.01025.92
8.1.270.0030.00519.02
8.1.260.0040.00426.35
8.1.250.0040.00428.09
8.1.240.0030.00624.02
8.1.230.0040.00819.28
8.1.220.0000.00817.79
8.1.210.0050.00318.77
8.1.200.0090.00017.50
8.1.190.0040.00417.36
8.1.180.0030.00618.10
8.1.170.0000.00818.86
8.1.160.0000.00722.12
8.1.150.0070.00018.97
8.1.140.0040.00419.33
8.1.130.0040.00417.80
8.1.120.0000.00717.68
8.1.110.0000.00817.73
8.1.100.0000.00717.63
8.1.90.0040.00417.71
8.1.80.0040.00417.70
8.1.70.0070.00017.64
8.1.60.0030.00617.81
8.1.50.0000.00817.75
8.1.40.0030.00617.77
8.1.30.0030.00617.87
8.1.20.0090.00017.84
8.1.10.0030.00517.65
8.1.00.0050.00317.62
8.0.300.0090.00018.77
8.0.290.0070.00017.00
8.0.280.0040.00418.53
8.0.270.0000.00717.47
8.0.260.0070.00017.22
8.0.250.0000.00717.21
8.0.240.0040.00417.21
8.0.230.0000.00717.29
8.0.220.0070.00017.29
8.0.210.0040.00417.12
8.0.200.0000.00617.36
8.0.190.0040.00717.30
8.0.180.0020.00517.25
8.0.170.0030.00517.20
8.0.160.0040.00417.26
8.0.150.0030.00517.19
8.0.140.0040.00417.24
8.0.130.0060.00013.66
8.0.120.0050.00317.10
8.0.110.0030.00617.21
8.0.100.0000.00817.25
8.0.90.0000.00717.25
8.0.80.0170.00317.30
8.0.70.0080.00017.29
8.0.60.0040.00417.29
8.0.50.0040.00417.36
8.0.30.0110.01317.32
8.0.20.0100.00917.48
8.0.10.0000.00817.20
8.0.00.0110.00816.91
7.4.330.0000.00515.06
7.4.320.0070.00016.84
7.4.300.0070.00016.64
7.4.290.0040.00416.76
7.4.280.0000.00716.82
7.4.270.0030.00316.75
7.4.260.0050.00316.82
7.4.250.0070.00016.80
7.4.240.0020.00516.75
7.4.230.0080.00016.76
7.4.220.0110.01116.60
7.4.210.0100.01016.66
7.4.200.0000.00716.58
7.4.160.0000.01716.75
7.4.150.0130.00417.40
7.4.140.0110.00917.86
7.4.130.0060.01416.62
7.4.120.0120.00416.65
7.4.110.0080.01116.82
7.4.100.0070.01116.46
7.4.90.0120.00616.94
7.4.80.0090.00919.39
7.4.70.0120.00816.70
7.4.60.0090.00916.68
7.4.50.0030.00616.64
7.4.40.0040.01416.77
7.4.30.0090.00916.73
7.4.00.0040.01115.18
7.3.330.0030.00313.61
7.3.320.0000.00613.48
7.3.310.0000.00716.49
7.3.300.0000.00616.53
7.3.290.0110.00516.62
7.3.280.0080.01016.61
7.3.270.0100.00717.40
7.3.260.0110.00716.72
7.3.250.0090.00716.80
7.3.240.0100.01316.64
7.3.230.0150.00616.71
7.3.210.0120.01416.87
7.3.200.0070.01019.39
7.3.190.0190.00416.84
7.3.180.0040.01216.59
7.3.170.0060.01216.64
7.3.160.0090.00616.64
7.3.120.0070.00714.94
7.3.110.0100.00715.06
7.3.100.0100.00715.18
7.3.90.0080.00814.84
7.3.80.0130.00315.12
7.3.70.0100.00715.16
7.3.60.0040.00715.14
7.3.50.0060.00615.27
7.3.40.0030.00714.99
7.3.30.0100.00715.04
7.3.20.0060.00616.89
7.3.10.0060.00716.89
7.3.00.0080.00616.87
7.2.330.0090.00917.10
7.2.320.0110.00716.75
7.2.310.0110.00616.72
7.2.300.0140.00316.86
7.2.290.0130.00417.05
7.2.240.0040.01115.32
7.2.230.0100.00715.01
7.2.220.0040.01115.32
7.2.210.0000.01815.43
7.2.200.0030.00915.44
7.2.190.0040.01415.43
7.2.180.0060.00915.36
7.2.170.0060.01015.46
7.2.160.0070.01015.46
7.2.150.0040.01417.19
7.2.140.0130.00317.18
7.2.130.0090.00717.10
7.2.120.0100.00517.14
7.2.110.0020.01217.04
7.2.100.0060.00717.03
7.2.90.0040.00917.18
7.2.80.0050.01117.14
7.2.70.0030.01017.20
7.2.60.0070.00917.10
7.2.50.0050.00717.06
7.2.40.0060.00817.16
7.2.30.0040.01017.18
7.2.20.0050.00917.00
7.2.10.0070.00817.10
7.2.00.0070.00717.54
7.1.330.0000.01415.91
7.1.320.0030.01316.05
7.1.310.0000.01415.85
7.1.300.0060.00915.93
7.1.290.0000.01716.02
7.1.280.0070.00715.96
7.1.270.0030.00915.95
7.1.260.0100.00716.06
7.1.250.0050.00715.97
7.1.240.0070.01015.98
7.1.230.0060.00915.92
7.1.220.0090.00015.71
7.1.210.0000.00915.75
7.1.200.0090.00615.86
7.1.190.0070.00715.66
7.1.180.0120.00315.74
7.1.170.0070.00716.05
7.1.160.0060.00615.93
7.1.150.0030.01015.87
7.1.140.0040.00416.11
7.1.130.0070.00316.05
7.1.120.0070.00715.91
7.1.110.0100.00615.91
7.1.100.0030.01417.06
7.1.90.0070.00715.89
7.1.80.0030.00616.04
7.1.70.0080.00216.80
7.1.60.0110.00717.64
7.1.50.0050.00716.24
7.1.40.0030.00615.84
7.1.30.0070.00715.88
7.1.20.0000.01115.73
7.1.10.0140.00315.93
7.1.00.0080.03719.16
7.0.330.0040.01115.57
7.0.320.0070.00715.55
7.0.310.0000.00915.62
7.0.300.0000.01415.64
7.0.290.0030.00715.61
7.0.280.0090.00615.62
7.0.270.0000.01415.33
7.0.260.0070.00715.66
7.0.250.0090.00315.77
7.0.240.0180.00514.95
7.0.230.0050.00315.59
7.0.220.0040.00415.57
7.0.210.0090.00315.39
7.0.200.0010.00716.21
7.0.190.0030.00715.53
7.0.180.0080.00315.47
7.0.170.0000.01415.66
7.0.160.0040.00715.36
7.0.150.0090.00615.53
7.0.140.0020.03818.86
7.0.130.0080.00415.71
7.0.120.0030.00615.64
7.0.110.0040.01115.69
7.0.100.0050.00515.65
7.0.90.0000.01215.39
7.0.80.0100.00015.50
7.0.70.0080.00415.59
7.0.60.0050.02417.88
7.0.50.0050.03416.55
7.0.40.0070.02416.58
7.0.30.0180.02616.69
7.0.20.0110.02616.82
7.0.10.0080.04717.04
7.0.00.0030.04816.80
5.6.380.0070.00714.61
5.6.370.0040.00714.69
5.6.360.0030.01214.64
5.6.350.0090.00414.44
5.6.340.0060.00814.55
5.6.330.0100.00614.43
5.6.320.0110.00814.31
5.6.310.0030.00914.86
5.6.300.0030.00614.69
5.6.290.0040.00714.68
5.6.280.0000.04317.83
5.6.270.0130.00014.47
5.6.260.0080.00814.71
5.6.250.0070.00714.66
5.6.240.0000.01414.43
5.6.230.0110.00414.38
5.6.220.0060.00914.39
5.6.210.0100.04017.56
5.6.200.0060.04316.12
5.6.190.0110.02417.57
5.6.180.0220.03417.52
5.6.170.0200.02617.42
5.6.160.0050.04217.64
5.6.150.0070.03016.35
5.6.140.0030.04716.32
5.6.130.0030.04516.40
5.6.120.0040.03617.88
5.6.110.0090.04517.86
5.6.100.0050.04517.94
5.6.90.0070.03217.83
5.6.80.0100.03917.66
5.6.70.0030.01014.69
5.6.60.0000.00814.58
5.6.50.0030.00914.73
5.6.40.0080.00414.61
5.6.30.0120.00314.52
5.6.20.0120.00014.66
5.6.10.0000.01214.39
5.6.00.0060.00914.75
5.5.380.0070.00711.02
5.5.370.0060.00911.04
5.5.360.0140.00011.10
5.5.350.0050.02315.74
5.5.340.0020.04814.40
5.5.330.0070.04515.61
5.5.320.0080.02815.78
5.5.310.0110.02915.78
5.5.300.0100.03714.67
5.5.290.0020.02314.72
5.5.280.0060.04115.97
5.5.270.0070.03716.14
5.5.260.0030.03816.19
5.5.250.0070.04216.05
5.5.240.2150.02215.63
5.5.230.0060.00611.19
5.5.220.0060.00611.30
5.5.210.0030.00511.27
5.5.200.0040.00811.09
5.5.190.0070.00711.27
5.5.180.0090.00311.20
5.5.170.0000.01011.38
5.5.160.0080.00311.39
5.5.150.0080.00411.49
5.5.140.0060.00311.50
5.5.130.0070.00711.32
5.5.120.0030.00711.17
5.5.110.0060.00611.34
5.5.100.0040.00711.03
5.5.90.0000.01111.36
5.5.80.0110.00011.36
5.5.70.0040.00411.15
5.5.60.0000.01111.52
5.5.50.0060.00311.49
5.5.40.0030.00611.15
5.5.30.0030.00311.35
5.5.20.0000.00711.41
5.5.10.0070.00311.35
5.5.00.0070.00711.34
5.4.450.2370.02415.42
5.4.440.0000.04915.35
5.4.430.0770.02915.32
5.4.420.2300.02315.35
5.4.410.2170.01915.32
5.4.400.1620.02215.12
5.4.390.1840.02515.13
5.4.380.2030.02215.17
5.4.370.2380.02014.90
5.4.360.2380.02315.30
5.4.350.2110.01715.15
5.4.340.2270.02715.12
5.4.330.0070.00411.18
5.4.320.2430.02115.22
5.4.310.2080.02615.19
5.4.300.2450.02315.10
5.4.290.2050.02115.14
5.4.280.0830.02115.17
5.4.270.1350.02115.08
5.4.260.1420.01815.21
5.4.250.1670.02015.03
5.4.240.1680.01815.14
5.4.230.1720.02115.21
5.4.220.1180.01515.10
5.4.210.1660.02015.08
5.4.200.1580.01515.23
5.4.190.2100.02214.87
5.4.180.2000.02415.12
5.4.170.2170.02015.32
5.4.160.2080.01814.96
5.4.150.1850.02515.18
5.4.140.2370.01713.77
5.4.130.2080.02413.77
5.4.120.1800.02113.74
5.4.110.1770.01913.71
5.4.100.2300.02313.69
5.4.90.2320.02213.75
5.4.80.1900.02213.82
5.4.70.2340.02013.90
5.4.60.2100.01813.74
5.4.50.2240.01913.71
5.4.40.2800.02513.80
5.4.30.2430.01613.83
5.4.20.2100.02013.88
5.4.10.2130.02113.89
5.4.00.2230.02513.57
5.3.290.2280.02012.71
5.3.280.1470.02312.67
5.3.270.1940.02312.77
5.3.260.1670.01812.66
5.3.250.2270.02012.72
5.3.240.1930.02212.64
5.3.230.1900.01812.73
5.3.220.2000.02012.61
5.3.210.1860.02112.59
5.3.200.1970.02012.56
5.3.190.2340.02412.58
5.3.180.2110.02012.68
5.3.170.1820.02212.65
5.3.160.2270.01712.72
5.3.150.1820.01812.70
5.3.140.2090.02012.69
5.3.130.2130.02012.60
5.3.120.2180.01812.53
5.3.110.2340.01712.58
5.3.100.2390.02012.37
5.3.90.2300.01812.29
5.3.80.2330.02712.23
5.3.70.2290.02012.16
5.3.60.2110.02012.24
5.3.50.2130.01712.23
5.3.40.2170.02312.20
5.3.30.1900.01712.24
5.3.20.1860.02312.15
5.3.10.2040.02011.96
5.3.00.1920.02212.00
5.2.170.1670.01310.24
5.2.160.1570.01710.26
5.2.150.1780.01910.16
5.2.140.1550.01810.24
5.2.130.1770.01210.20
5.2.120.1730.02110.00
5.2.110.1580.01910.12
5.2.100.1630.01310.25
5.2.90.1810.01510.13
5.2.80.1870.01710.12
5.2.70.1700.01710.13
5.2.60.1850.01610.14
5.2.50.2100.01410.14
5.2.40.1480.02110.07
5.2.30.1690.0179.98
5.2.20.1520.0159.80
5.2.10.1570.0179.95
5.2.00.1450.0169.86
5.1.60.1470.0139.19
5.1.50.1350.0129.21
5.1.40.1560.0159.08
5.1.30.1330.0169.44
5.1.20.1570.0129.29
5.1.10.1650.0169.24
5.1.00.1670.0169.05
5.0.50.0970.0118.08
5.0.40.0770.0127.99
5.0.30.0910.0167.86
5.0.20.0760.0107.69
5.0.10.0500.0117.76
5.0.00.0750.0167.58
4.4.90.0900.0106.41
4.4.80.0780.0106.41
4.4.70.0930.0086.38
4.4.60.0690.0086.40
4.4.50.0710.0076.42
4.4.40.0780.0116.41
4.4.30.0730.0086.38
4.4.20.0800.0116.48
4.4.10.1050.0126.48
4.4.00.0780.0176.42
4.3.110.0800.0096.38
4.3.100.0600.0106.37
4.3.90.0480.0106.41
4.3.80.0610.0156.36
4.3.70.0670.0086.38
4.3.60.0720.0136.38
4.3.50.0680.0096.39
4.3.40.0900.0116.33
4.3.30.0380.0086.21
4.3.20.0380.0106.21
4.3.10.0530.0106.21
4.3.00.0470.0136.21

preferences:
53.94 ms | 401 KiB | 5 Q