3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace Core\Routing { interface Router { public function serve($uri); } class SimpleRouter implements Router { public function serve($uri) { echo 'Serving request: ', $uri, ' using ', __CLASS__; } } class FancyRouter implements Router { public function serve($uri) { echo 'Serving request: ', $uri, ' using ', __CLASS__; } } } namespace Core\Database { interface Connection { public function query($sql); } class MySQLConnection implements Connection { public function query($sql) { echo 'Querying: ', $sql, ' using ', __CLASS__; } } class MariaDBConnection implements Connection { public function query($sql) { echo 'Querying: ', $sql, ' using ', __CLASS__; } } } namespace Core { abstract class Application { protected static $instances = array(); private $properties = array(); public static function getInstance() { return isset(self::$instances[$className = get_called_class()]) ? self::$instances[$className] : self::$instances[$className] = new static(); } protected function __construct() { } public function __set($propertyName, $value) { $this->properties[$propertyName] = $value; } public function __get($propertyName) { return is_callable($this->properties[$propertyName]) ? $this->properties[$propertyName] = $this->properties[$propertyName]($this) : $this->properties[$propertyName]; } } abstract class WebApplication extends Application { protected $routerClassName = '\\Core\\Routing\\SimpleRouter'; // TODO: why not use constants here ??? maybe code should be allowed to modify dependencies at runtime ??? protected $databaseConnectionClassName = '\\Core\\Database\\MySQLConnection'; protected function __construct() { $this->router = function ($application) { //$routerClassName = $application->routerClassName; //return new $routerClassName(); return new $application->routerClassName(); }; $this->databaseConnection = function ($application) { $databaseConnectionClassName = $application->databaseConnectionClassName; return new $databaseConnectionClassName(); }; } } } namespace CompanyName { final class DiscussionsWebApplication extends \Core\WebApplication { protected $routerClassName = '\\Core\\Routing\\FancyRouter'; protected $databaseConnectionClassName = '\\Core\\Database\\MariaDBConnection'; } } namespace { CompanyName\DiscussionsWebApplication::getInstance()->router->serve('http://foo.bar/path/to/resource'); }

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.40.0130.00318.97
8.3.30.0100.00720.21
8.3.20.0000.00820.21
8.3.10.0040.00422.02
8.3.00.0040.00422.43
8.2.170.0070.00722.96
8.2.160.0120.00322.26
8.2.150.0080.00024.18
8.2.140.0080.00024.66
8.2.130.0060.00926.16
8.2.120.0090.00021.13
8.2.110.0100.00021.00
8.2.100.0060.00617.91
8.2.90.0030.00519.36
8.2.80.0040.00417.97
8.2.70.0080.00017.63
8.2.60.0030.00618.05
8.2.50.0080.00018.10
8.2.40.0000.00818.22
8.2.30.0030.00619.38
8.2.20.0000.00717.68
8.2.10.0050.00317.68
8.2.00.0060.00317.64
8.1.270.0060.00323.99
8.1.260.0080.00026.35
8.1.250.0070.00028.09
8.1.240.0050.00520.95
8.1.230.0040.00717.89
8.1.220.0030.00617.77
8.1.210.0040.00418.77
8.1.200.0000.01117.21
8.1.190.0040.00417.48
8.1.180.0080.00018.10
8.1.170.0000.00818.45
8.1.160.0040.00420.67
8.1.150.0000.00718.55
8.1.140.0000.00817.35
8.1.130.0070.00017.79
8.1.120.0000.00717.41
8.1.110.0050.00317.47
8.1.100.0040.00417.41
8.1.90.0030.00517.48
8.1.80.0050.00217.35
8.1.70.0000.00717.48
8.1.60.0040.00417.65
8.1.50.0000.00717.51
8.1.40.0040.00417.52
8.1.30.0090.00017.67
8.1.20.0000.00817.64
8.1.10.0000.00817.50
8.1.00.0030.00517.46
8.0.300.0000.00718.77
8.0.290.0040.00416.75
8.0.280.0040.00418.47
8.0.270.0040.00417.29
8.0.260.0000.00616.79
8.0.250.0070.00017.02
8.0.240.0000.00816.88
8.0.230.0050.00217.02
8.0.220.0030.00516.89
8.0.210.0000.00716.92
8.0.200.0000.00616.88
8.0.190.0040.00416.82
8.0.180.0000.00816.88
8.0.170.0000.00716.89
8.0.160.0000.00816.96
8.0.150.0030.00516.82
8.0.140.0000.00916.86
8.0.130.0000.00813.30
8.0.120.0030.00616.93
8.0.110.0040.00416.74
8.0.100.0030.00516.91
8.0.90.0070.00016.96
8.0.80.0060.01016.88
8.0.70.0030.00516.98
8.0.60.0080.00016.86
8.0.50.0000.00716.79
8.0.30.0100.00917.22
8.0.20.0070.01117.40
8.0.10.0070.00016.85
8.0.00.0150.01116.68
7.4.330.0000.00515.00
7.4.320.0070.00016.38
7.4.300.0060.00016.57
7.4.290.0030.00516.60
7.4.280.0000.00716.61
7.4.270.0070.00016.45
7.4.260.0030.00613.36
7.4.250.0040.00416.39
7.4.240.0030.00516.49
7.4.230.0040.00416.63
7.4.220.0150.01016.65
7.4.210.0060.01016.60
7.4.200.0030.00416.58
7.4.190.0070.00016.43
7.4.160.0140.00316.55
7.4.150.0120.00617.40
7.4.140.0070.01017.86
7.4.130.0070.01016.57
7.4.120.0070.01016.53
7.4.110.0100.00716.34
7.4.100.0110.00516.63
7.4.90.0070.01016.50
7.4.80.0150.00319.39
7.4.70.0120.00616.44
7.4.60.0130.00316.48
7.4.50.0060.00316.58
7.4.40.0070.00722.77
7.4.30.0030.01316.52
7.4.00.0040.01414.88
7.3.330.0000.00513.37
7.3.320.0000.00513.39
7.3.310.0030.00316.25
7.3.300.0040.00416.33
7.3.290.0040.01116.29
7.3.280.0090.00816.42
7.3.270.0080.00817.40
7.3.260.0060.01216.62
7.3.250.0080.01516.49
7.3.240.0120.00916.35
7.3.230.0170.00016.41
7.3.210.0030.01316.38
7.3.200.0120.00619.39
7.3.190.0120.01216.40
7.3.180.0060.01116.65
7.3.170.0090.00616.39
7.3.160.0070.00716.52
7.3.120.0030.01515.12
7.2.330.0160.00316.88
7.2.320.0070.01016.38
7.2.310.0070.01016.69
7.2.300.0130.00316.80
7.2.290.0090.00816.73
7.2.00.0030.01419.14
7.1.100.0060.00618.38
7.1.70.0000.00717.25
7.1.60.0100.01319.32
7.1.50.0110.01134.53
7.1.00.0000.03722.40
7.0.200.0040.00416.93
7.0.140.0100.07021.98
7.0.100.0170.05320.05
7.0.90.0170.06320.04
7.0.80.0200.04320.03
7.0.70.0000.05020.00
7.0.60.0270.07719.98
7.0.50.0130.05020.35
7.0.40.0100.07720.07
7.0.30.0170.08320.11
7.0.20.0070.08020.10
7.0.10.0100.08020.06
7.0.00.0070.06320.02
5.6.280.0000.07721.09
5.6.250.0030.07320.66
5.6.240.0030.05020.66
5.6.230.0070.07720.65
5.6.220.0100.04320.52
5.6.210.0030.04320.68
5.6.200.0130.06321.07
5.6.190.0070.05321.16
5.6.180.0070.06021.04
5.6.170.0070.08021.12
5.6.160.0030.08720.97
5.6.150.0230.06021.05
5.6.140.0030.07321.20
5.6.130.0130.07320.99
5.6.120.0030.08021.11
5.6.110.0030.07321.19
5.6.100.0100.08021.13
5.6.90.0130.07721.13
5.6.80.0030.06020.43
5.6.70.0000.07020.38
5.6.60.0100.07320.45
5.6.50.0030.04720.42
5.6.40.0070.04720.34
5.6.30.0030.05020.50
5.6.20.0070.08320.52
5.6.10.0130.06720.42
5.6.00.0130.06320.50
5.5.380.0100.08320.48
5.5.370.0100.05720.58
5.5.360.0130.07720.36
5.5.350.0130.07020.46
5.5.340.0030.06720.65
5.5.330.0070.06720.81
5.5.320.0100.03720.89
5.5.310.0130.07020.86
5.5.300.0100.07020.86
5.5.290.0070.07720.92
5.5.280.0070.08020.68
5.5.270.0030.05320.91
5.5.260.0100.08020.75
5.5.250.0070.07720.67
5.5.240.0070.04320.04
5.5.230.0030.06720.33
5.5.220.0070.07320.24
5.5.210.0070.08020.24
5.5.200.0030.07020.22
5.5.190.0030.04320.21
5.5.180.0100.07020.29
5.5.160.0070.07020.27
5.5.150.0100.06320.18
5.5.140.0130.04020.21
5.5.130.0070.04320.29
5.5.120.0130.04020.25
5.5.110.0030.04320.28
5.5.100.0100.04020.21
5.5.90.0070.07320.13
5.5.80.0100.07320.19
5.5.70.0100.03320.07
5.5.60.0130.07020.06
5.5.50.0030.07719.97
5.5.40.0100.07720.09
5.5.30.0070.08020.05
5.5.20.0030.08320.09
5.5.10.0100.07720.07
5.5.00.0100.06320.05
5.4.450.0130.04719.36
5.4.440.0100.06319.42
5.4.430.0130.03719.50
5.4.420.0030.07319.16
5.4.410.0100.04319.36
5.4.400.0000.08019.04
5.4.390.0100.04019.19
5.4.380.0070.08319.04
5.4.370.0100.07019.05
5.4.360.0130.07019.13
5.4.350.0070.06718.95
5.4.340.0100.04018.88
5.4.320.0030.08719.18
5.4.310.0070.07019.16
5.4.300.0000.07019.16
5.4.290.0030.05318.84
5.4.280.0030.05018.92
5.4.270.0070.07319.16
5.4.260.0070.07319.13
5.4.250.0000.07319.20
5.4.240.0070.04019.20
5.4.230.0030.06718.94
5.4.220.0070.08019.09
5.4.210.0030.08019.20
5.4.200.0200.06319.12
5.4.190.0100.07319.15
5.4.180.0100.07319.04
5.4.170.0070.05718.89
5.4.160.0030.06319.10
5.4.150.0000.08319.14
5.4.140.0030.05316.55
5.4.130.0200.05316.46
5.4.120.0170.06316.38
5.4.110.0070.03316.48
5.4.100.0000.08016.57
5.4.90.0130.04316.34
5.4.80.0130.06716.54
5.4.70.0070.04016.50
5.4.60.0070.06316.38
5.4.50.0070.07016.23
5.4.40.0100.03716.46
5.4.30.0030.07716.47
5.4.20.0100.07016.28
5.4.10.0070.04316.45
5.4.00.0000.06315.81
5.3.290.0070.03714.74
5.3.280.0100.06014.78
5.3.270.0030.08314.66
5.3.260.0030.06714.68
5.3.250.0130.04014.79
5.3.240.0130.04014.75
5.3.230.0030.08014.56
5.3.220.0000.04314.64
5.3.210.0000.06314.73
5.3.200.0130.06714.55
5.3.190.0130.07014.59
5.3.180.0030.07014.56
5.3.170.0030.08014.58
5.3.160.0030.06714.71
5.3.150.0070.04314.61
5.3.140.0100.04014.61
5.3.130.0100.04014.65
5.3.120.0130.06714.70
5.3.110.0070.07714.64
5.3.100.0030.04014.03
5.3.90.0070.05014.16
5.3.80.0070.07014.11
5.3.70.0130.06314.07
5.3.60.0070.03313.95
5.3.50.0100.03013.91
5.3.40.0030.04014.11
5.3.30.0030.04313.88
5.3.20.0100.05713.79
5.3.10.0130.06713.75
5.3.00.0070.07013.81
5.2.170.0030.04011.11
5.2.160.0070.05311.11
5.2.150.0030.05311.14
5.2.140.0070.03011.19
5.2.130.0100.03011.11
5.2.120.0070.05011.11
5.2.110.0070.06011.11
5.2.100.0000.06311.11
5.2.90.0100.04311.13
5.2.80.0030.06011.11
5.2.70.0100.05011.12
5.2.60.0170.05011.12
5.2.50.0100.07011.11
5.2.40.0100.05711.11
5.2.30.0100.04311.11
5.2.20.0130.05311.11
5.2.10.0100.04711.11
5.2.00.0070.05011.11
5.1.60.0130.02311.11
5.1.50.0070.05011.11
5.1.40.0000.05311.11
5.1.30.0070.04011.11
5.1.20.0030.03311.11
5.1.10.0030.05711.11
5.1.00.0100.03011.11
5.0.50.0030.01711.11
5.0.40.0070.04011.11
5.0.30.0000.05311.11
5.0.20.0030.04011.11
5.0.10.0030.04311.11
5.0.00.0070.04311.11
4.4.90.0030.03311.11
4.4.80.0030.03311.11
4.4.70.0030.03311.11
4.4.60.0000.03711.11
4.4.50.0070.02711.11
4.4.40.0030.05011.11
4.4.30.0000.03011.11
4.4.20.0100.02711.11
4.4.10.0070.02311.11
4.4.00.0000.05311.11
4.3.110.0030.04311.11
4.3.100.0070.01011.11
4.3.90.0030.04011.11
4.3.80.0000.05011.11
4.3.70.0000.02311.11
4.3.60.0000.02011.11
4.3.50.0070.02011.11
4.3.40.0000.02711.11
4.3.30.0030.03311.11
4.3.20.0030.03011.11
4.3.10.0000.02011.11
4.3.00.0030.02011.11

preferences:
38.11 ms | 400 KiB | 5 Q