3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Horse { // Calculate when the Horse needs feeding public function calculate() { // Check if there is session data about the Horse's feedings if($_SESSION["last_feeding"]) { $lastFeeding = $_SESSION["last_feeding"]; $nextFeeding = $_SESSION["next_feeding"]; } else { $lastFeeding = ""; $nextFeeding = ""; } // Get the current time & create a timestamp $time = new DateTime(); $timestamp = $time->getTimestamp(); // if the Horse has not been fed OR the Horse is hungry & needs to be fed if($lastFeeding == "" || $timestamp >= $nextFeeding) { // Feed the horse some delicious hay! return $this->feeding($lastFeeding, $nextFeeding); } else { // If the Horse is not hungry & and there is still time left before he next needs to eat // Output the session data about the Horse's feedings echo "<h1>Horse does not need to eat</h1>"; // last feeding echo "<h3>Last Ate on:</h3> " . date("H:i:sa d-m-Y", $_SESSION["last_feeding"]) . "<br>"; // next feeding echo "<h3>Next feeding time:</h3> " . date("H:i:sa d-m-Y", $_SESSION["next_feeding"]); } } private function feeding($lastFeeding, $nextFeeding) { // Get the current time & create a timestamp $time = new DateTime(); $lastFeeding = $time->getTimestamp(); // Create a next feeding time $timeModify = $time->modify("+10 minutes"); $nextFeeding = $timeModify->getTimestamp(); // Set the session data $_SESSION["last_feeding"] = $lastFeeding; $_SESSION["next_feeding"] = $nextFeeding; // If the Horse has just eaten and needs to wait ten minutes until his next meal // Output the session data about the Horse's feedings echo "<h1>Horse just ate</h1>"; // last feeding echo "<h3>Last Ate on:</h3> " . date("H:i:sa d-m-Y", $_SESSION["last_feeding"]) . "<br>"; // next feeding echo "<h3>Next feeding time:</h3> " . date("H:i:sa d-m-Y", $_SESSION["next_feeding"]); }}// Start the sessionsession_start();// Calculate if the Horse needs feeding(new Horse)->calculate();

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)
5.4.320.0050.03612.50
5.4.310.0030.03912.50
5.4.300.0080.03812.50
5.4.290.0100.03212.50
5.4.280.0040.03512.39
5.4.270.0050.03912.39
5.4.260.0080.04312.39
5.4.250.0070.03512.39
5.4.240.0060.03412.40
5.4.230.0070.03512.39
5.4.220.0070.04112.39
5.4.210.0080.03312.39
5.4.200.0050.03812.39
5.4.190.0050.03612.39
5.4.180.0020.03912.38
5.4.170.0070.03612.39
5.4.160.0060.03412.39
5.4.150.0100.03512.39
5.4.140.0110.03512.07
5.4.130.0040.03712.06
5.4.120.0080.03112.02
5.4.110.0050.03412.02
5.4.100.0040.03612.02
5.4.90.0070.03412.02
5.4.80.0050.03612.02
5.4.70.0060.04012.02
5.4.60.0080.03712.02
5.4.50.0050.04012.02
5.4.40.0050.03512.00
5.4.30.0050.03712.00
5.4.20.0040.03811.99
5.4.10.0080.03612.00
5.4.00.0030.04311.49
5.3.290.0060.03712.80
5.3.280.0040.04112.71
5.3.270.0060.04512.72
5.3.260.0040.03912.72
5.3.250.0060.03612.72
5.3.240.0060.03512.72
5.3.230.0050.03912.71
5.3.220.0060.03612.68
5.3.210.0030.04412.68
5.3.200.0050.03712.68
5.3.190.0120.03512.68
5.3.180.0050.03612.67
5.3.170.0070.03512.67
5.3.160.0060.03812.67
5.3.150.0060.03912.67
5.3.140.0060.03512.66
5.3.130.0090.03912.66
5.3.120.0080.03912.66
5.3.110.0040.03912.66
5.3.100.0030.03912.12
5.3.90.0060.03812.10
5.3.80.0060.04012.09
5.3.70.0060.03512.09
5.3.60.0070.03512.08
5.3.50.0070.03712.02
5.3.40.0060.03612.02
5.3.30.0050.03611.98
5.3.20.0090.03911.75
5.3.10.0070.04011.73
5.3.00.0070.03411.71
5.2.170.0050.0369.22
5.2.160.0060.0269.22
5.2.150.0060.0329.21
5.2.140.0050.0369.21
5.2.130.0050.0309.18
5.2.120.0040.0299.18
5.2.110.0080.0269.18
5.2.100.0030.0299.17
5.2.90.0050.0279.17
5.2.80.0070.0279.17
5.2.70.0060.0379.17
5.2.60.0060.0289.13
5.2.50.0080.0269.10
5.2.40.0060.0319.07
5.2.30.0050.0319.05
5.2.20.0050.0289.04
5.2.10.0040.0278.95
5.2.00.0050.0338.80
5.1.60.0060.0248.09
5.1.50.0020.0308.08
5.1.40.0050.0288.06
5.1.30.0050.0288.42
5.1.20.0060.0248.43
5.1.10.0040.0258.16
5.1.00.0030.0278.16
5.0.50.0040.0206.64
5.0.40.0030.0196.50
5.0.30.0020.0326.31
5.0.20.0010.0226.27
5.0.10.0020.0216.26
5.0.00.0050.0326.25
4.4.90.0010.0184.78
4.4.80.0020.0174.75
4.4.70.0030.0184.75
4.4.60.0040.0164.75
4.4.50.0030.0164.77
4.4.40.0020.0254.70
4.4.30.0020.0164.76
4.4.20.0030.0204.84
4.4.10.0020.0184.85
4.4.00.0020.0254.76
4.3.110.0030.0154.67
4.3.100.0020.0154.66
4.3.90.0030.0174.63
4.3.80.0010.0354.58
4.3.70.0030.0174.63
4.3.60.0020.0164.63
4.3.50.0010.0184.63
4.3.40.0040.0304.54
4.3.30.0030.0203.30
4.3.20.0030.0143.28
4.3.10.0030.0213.23
4.3.00.0100.0237.12

preferences:
140.21 ms | 1394 KiB | 7 Q