3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface Roulette { public function move(); } interface Checkable { public function check(); } interface Rotatable { public function rotate(); } abstract class CircleLoad implements Rotatable, Checkable { protected $charges = null; public function __construct() { $this->setCharges(); } abstract protected function setCharges(); } class SixChargedRevolver extends CircleLoad { CONST CHARGES = 6; protected $loaded = null; protected $current = null; public function __construct() { $this->loaded = mt_rand(1, self::CHARGES); $this->current = 1; } public function check() { return $this->current==$this->loaded; } public function rotate() { $rotations = mt_rand(1, 2*self::CHARGES); $this->current = 1 + $rotations%self::CHARGES; } protected function setCharges() { $this->charges = self::CHARGES; } } abstract class RouletteGame implements Roulette { protected $playable = null; public function setPlayable(CircleLoad $playable) { $this->playable = $playable; } } class RussianRoulette extends RouletteGame { public function move() { $this->playable->rotate(); if($this->playable->check()) { die('Boom..'); } echo 'Click!'; } } class RussianRouletteFactory { public function create() { $playable = new SixChargedRevolver(); $roulette = new RussianRoulette(); $roulette->setPlayable($playable); return $roulette; } } $owner = new RussianRouletteFactory; $roulette = $owner->create(); $roulette->move(); $roulette->move(); $roulette->move(); $roulette->move();

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)
7.3.10.0080.00316.77
7.3.00.0000.01016.81
7.2.130.0040.00717.07
7.2.120.0060.00616.93
7.2.110.0070.00716.95
7.2.100.0000.01117.02
7.2.90.0060.00617.13
7.2.80.0060.01416.84
7.2.70.0150.00817.05
7.2.60.0030.01217.03
7.2.50.0100.00316.79
7.2.40.0140.00316.99
7.2.30.0100.00616.93
7.2.20.0030.01316.59
7.2.10.0070.00716.93
7.2.00.0050.00516.96
7.1.250.0030.00715.74
7.1.70.0000.01017.28
7.1.60.0030.02019.33
7.1.50.0200.01634.82
7.1.00.0070.07322.51
7.0.200.0040.01216.81
7.0.140.0030.07322.10
7.0.100.0430.05020.20
7.0.90.0370.05319.88
7.0.80.0430.08319.91
7.0.70.0400.06319.92
7.0.60.0530.07720.00
7.0.50.0370.08320.29
7.0.40.0030.07720.19
7.0.30.0130.07320.10
7.0.20.0070.08319.96
7.0.10.0030.08320.04
7.0.00.0100.08020.07
5.6.280.0030.07321.17
5.6.250.0130.07720.66
5.6.240.0130.06320.69
5.6.230.0100.08020.71
5.6.220.0030.09320.65
5.6.210.0030.08020.58
5.6.200.0000.08321.13
5.6.190.0000.04721.16
5.6.180.0070.06720.98
5.6.170.0100.08321.06
5.6.160.0100.08321.13
5.6.150.0200.06721.06
5.6.140.0170.07320.96
5.6.130.0100.04321.20
5.6.120.0170.08321.10
5.6.110.0170.07321.08
5.6.100.0100.05021.04
5.6.90.0030.08720.95
5.6.80.0170.08320.42
5.6.70.0070.06720.54
5.6.60.0070.05320.36
5.6.50.0100.04320.52
5.6.40.0070.04720.41
5.6.30.0070.04020.44
5.6.20.0030.04720.43
5.6.10.0000.04720.38
5.6.00.0170.05020.33
5.5.380.0170.06020.41
5.5.370.0130.04320.59
5.5.360.0130.07320.46
5.5.350.0200.03720.40
5.5.340.0100.05320.92
5.5.330.0070.08020.86
5.5.320.0070.08720.93
5.5.310.0100.07720.80
5.5.300.0170.07320.93
5.5.290.0100.08020.94
5.5.280.0130.05020.80
5.5.270.0000.06020.74
5.5.260.0070.06320.79
5.5.250.0030.08020.75
5.5.240.0170.07320.05
5.5.230.0200.07020.28
5.5.220.0170.06320.29
5.5.210.0100.07720.26
5.5.200.0130.06720.02
5.5.190.0030.04320.23
5.5.180.0070.05020.25
5.5.160.0070.03720.26
5.5.150.0070.03720.11
5.5.140.0000.04320.17
5.5.130.0070.03720.21
5.5.120.0070.03720.10
5.5.110.0000.04320.27
5.5.100.0100.03020.07
5.5.90.0130.03020.15
5.5.80.0070.04020.13
5.5.70.0100.04320.17
5.5.60.0030.03719.95
5.5.50.0030.07020.08
5.5.40.0070.03720.08
5.5.30.0030.05020.11
5.5.20.0070.03720.08
5.5.10.0070.08020.04
5.5.00.0030.04319.97
5.4.450.0130.07319.57
5.4.440.0100.08019.18
5.4.430.0100.07319.49
5.4.420.0100.03319.46
5.4.410.0070.04719.33
5.4.400.0200.06719.14
5.4.390.0100.07019.18
5.4.380.0070.07019.05
5.4.370.0000.08018.94
5.4.360.0070.08018.88
5.4.350.0000.04318.95
5.4.340.0030.05018.95
5.4.320.0030.03719.09
5.4.310.0100.04718.91
5.4.300.0030.03719.03
5.4.290.0070.05719.20
5.4.280.0070.03719.18
5.4.270.0070.03319.16
5.4.260.0070.03319.16
5.4.250.0070.07319.13
5.4.240.0000.04018.84
5.4.230.0130.02719.16
5.4.220.0100.07019.02
5.4.210.0070.04019.17
5.4.200.0030.04018.94
5.4.190.0000.05019.22
5.4.180.0030.04719.17
5.4.170.0030.05318.84
5.4.160.0070.03319.21
5.4.150.0100.03319.11
5.4.140.0030.03316.47
5.4.130.0000.05016.47
5.4.120.0000.04016.45
5.4.110.0030.03716.57
5.4.100.0000.04016.49
5.4.90.0000.04716.45
5.4.80.0030.03716.38
5.4.70.0030.03316.54
5.4.60.0070.04316.42
5.4.50.0000.03716.31
5.4.40.0070.04016.43
5.4.30.0030.03316.45
5.4.20.0000.03716.48
5.4.10.0030.03716.40
5.4.00.0030.03315.87
5.3.290.0030.03714.68
5.3.280.0030.03714.63
5.3.270.0030.03714.70
5.3.260.0070.06314.61
5.3.250.0100.03014.68
5.3.240.0070.05014.77
5.3.230.0070.03314.64
5.3.220.0030.03714.66
5.3.210.0030.04014.66
5.3.200.0100.03314.68
5.3.190.0000.04014.60
5.3.180.0000.04014.58
5.3.170.0030.03714.65
5.3.160.0030.03714.61
5.3.150.0070.03314.65
5.3.140.0030.04014.52
5.3.130.0000.04014.67
5.3.120.0070.04014.58
5.3.110.0000.04714.55
5.3.100.0030.05014.13
5.3.90.0000.04014.18
5.3.80.0030.03714.03
5.3.70.0030.04714.02
5.3.60.0130.02714.09
5.3.50.0030.04713.95
5.3.40.0070.07714.03
5.3.30.0000.07713.92
5.3.20.0030.08013.75
5.3.10.0000.07313.70
5.3.00.0070.07013.70
5.2.170.0030.05012.12
5.2.160.0000.03312.12
5.2.150.0030.06312.12
5.2.140.0070.02312.12
5.2.130.0070.05312.12
5.2.120.0100.05012.12
5.2.110.0070.06012.12
5.2.100.0030.06312.12
5.2.90.0000.06712.12
5.2.80.0130.04712.12
5.2.70.0030.04712.12
5.2.60.0000.06712.12
5.2.50.0030.06312.12
5.2.40.0070.05712.12
5.2.30.0000.04012.12
5.2.20.0070.06012.12
5.2.10.0070.05012.12
5.2.00.0100.05312.12
5.1.60.0030.05312.12
5.1.50.0000.05712.12
5.1.40.0070.05312.12
5.1.30.0030.03312.12
5.1.20.0070.04312.12
5.1.10.0030.06012.12
5.1.00.0000.04712.12
5.0.50.0030.04712.12
5.0.40.0000.04712.12
5.0.30.0000.06712.12
5.0.20.0030.04012.12
5.0.10.0030.04712.12
5.0.00.0000.06012.12
4.4.90.0070.03312.12
4.4.80.0000.03312.12
4.4.70.0030.03012.12
4.4.60.0070.02312.12
4.4.50.0030.03312.12
4.4.40.0000.03012.12
4.4.30.0030.03012.12
4.4.20.0030.03312.12
4.4.10.0130.02712.12
4.4.00.0100.05012.12
4.3.110.0000.03312.12
4.3.100.0000.03012.12
4.3.90.0000.03712.12
4.3.80.0000.05312.12
4.3.70.0030.03712.12
4.3.60.0000.02012.12
4.3.50.0070.01712.12
4.3.40.0030.04312.12
4.3.30.0000.02312.12
4.3.20.0000.03712.12
4.3.10.0000.03312.12
4.3.00.0000.03712.12

preferences:
38.01 ms | 400 KiB | 5 Q