3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace Bar { interface PipeInterface { public function __construct($callbacks); public function pipe(callable $fn); public function process($payload); } function map(callable $fn) { return new class($fn) { private $fn; public function __construct(callable $fn) { $this->fn = $fn; } public function __invoke($payload) { return array_map($this->fn, $payload); } }; } function pipe($callbacks) { return new class($callbacks) implements PipeInterface { private $callbacks; public function __construct($callbacks) { if (is_array($this->callbacks)) { $this->callbacks = $callbacks; return; } $this->callbacks = [$callbacks]; } public function pipe(callable $callback) { return new self(array_merge($this->callbacks, [$callback])); } public function process($payload) { return array_reduce($this->callbacks, function ($payload, $callback) { return call_user_func($callback, $payload); }, $payload); } public function __invoke($payload) { return $this->process($payload); } }; } } namespace Foo { use function Bar\pipe; use function Bar\map; $xs = [ [ 'name' => 'Sérgio' ], [ 'name' => 'Marcelo' ] ]; $pipe = pipe(map(function ($x) { return $x['name']; })); // var_dump($pipe($xs)); // works $upper = pipe('strtoupper'); // echo $upper('hello'); // works $rev = $upper->pipe('strrev'); // doesn't work echo $rev('hello'); // doesn't work echo pipe(['strtoupper', 'strrev'])('hello'); // doesn't work }

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.0150.00618.68
8.3.50.0140.00018.15
8.3.40.0110.00418.96
8.3.30.0040.01118.97
8.3.20.0070.00020.16
8.3.10.0070.00023.61
8.3.00.0000.00819.38
8.2.180.0070.01117.00
8.2.170.0170.00322.96
8.2.160.0070.00719.45
8.2.150.0050.00324.18
8.2.140.0060.00324.66
8.2.130.0040.00422.11
8.2.120.0040.00426.35
8.2.110.0060.00320.91
8.2.100.0080.00417.93
8.2.90.0000.00819.01
8.2.80.0080.00017.97
8.2.70.0080.00417.75
8.2.60.0040.00417.80
8.2.50.0000.00918.10
8.2.40.0040.00420.48
8.2.30.0040.00419.14
8.2.20.0080.00017.77
8.2.10.0000.00818.14
8.2.00.0000.00718.18
8.1.280.0060.01225.92
8.1.270.0000.00823.97
8.1.260.0080.00028.09
8.1.250.0000.00828.09
8.1.240.0100.00022.19
8.1.230.0040.00818.97
8.1.220.0050.00317.74
8.1.210.0030.00718.77
8.1.200.0050.00517.36
8.1.190.0040.00417.38
8.1.180.0060.00318.10
8.1.170.0000.00818.66
8.1.160.0000.00822.12
8.1.150.0000.00718.83
8.1.140.0000.00719.53
8.1.130.0030.00317.63
8.1.120.0030.00317.52
8.1.110.0040.00817.36
8.1.100.0040.00417.49
8.1.90.0040.00417.50
8.1.80.0000.00717.36
8.1.70.0030.00317.43
8.1.60.0040.00417.57
8.1.50.0080.00017.50
8.1.40.0000.00817.57
8.1.30.0050.00517.57
8.1.20.0040.00417.71
8.1.10.0040.00417.54
8.1.00.0040.00417.58
8.0.300.0040.00418.77
8.0.290.0000.00716.75
8.0.280.0070.00018.46
8.0.270.0030.00317.28
8.0.260.0030.00317.33
8.0.250.0060.00017.04
8.0.240.0070.00017.04
8.0.230.0030.00316.91
8.0.220.0000.00716.96
8.0.210.0040.00416.96
8.0.200.0000.00716.92
8.0.190.0070.00016.92
8.0.180.0070.00016.93
8.0.170.0060.00317.05
8.0.160.0070.00017.04
8.0.150.0040.00416.83
8.0.140.0000.00716.96
8.0.130.0000.00613.34
8.0.120.0030.00616.86
8.0.110.0000.01016.93
8.0.100.0000.00717.02
8.0.90.0000.00716.84
8.0.80.0080.00816.96
8.0.70.0050.00317.00
8.0.60.0020.00516.94
8.0.50.0000.00817.01
8.0.30.0060.01217.10
8.0.20.0140.00917.43
8.0.10.0030.00517.11
8.0.00.0120.00616.91
7.4.330.0050.00016.79
7.4.320.0050.00216.52
7.4.300.0000.00616.61
7.4.290.0000.00716.63
7.4.280.0030.00616.50
7.4.270.0000.00716.49
7.4.260.0030.00316.58
7.4.250.0040.00416.51
7.4.240.0030.00316.52
7.4.230.0070.00016.60
7.4.220.0060.01216.49
7.4.210.0210.00016.49
7.4.200.0040.00416.61
7.4.160.0130.00316.32
7.4.150.0030.01817.40
7.4.140.0070.01117.86
7.4.130.0080.01116.53
7.4.120.0100.00816.48
7.4.110.0130.00716.60
7.4.100.0060.01016.65
7.4.90.0090.00916.46
7.4.80.0100.00819.39
7.4.70.0060.00916.53
7.4.60.0090.00916.54
7.4.50.0060.01016.72
7.4.40.0100.01016.30
7.4.30.0120.00816.52
7.4.00.0060.00614.87
7.3.330.0020.00213.35
7.3.320.0000.00513.22
7.3.310.0070.00016.28
7.3.300.0030.00316.20
7.3.290.0110.00516.40
7.3.280.0130.01016.41
7.3.270.0100.00717.40
7.3.260.0120.00816.37
7.3.250.0110.00916.36
7.3.240.0100.00716.46
7.3.230.0030.01416.39
7.3.210.0070.01016.64
7.3.200.0160.00016.49
7.3.190.0100.00616.41
7.3.180.0120.00916.61
7.3.170.0040.01216.53
7.3.160.0110.00516.39
7.2.330.0090.00916.78
7.2.320.0090.00916.48
7.2.310.0190.01516.78
7.2.300.0160.00016.80
7.2.290.0060.01116.78
7.2.60.0100.00017.09
7.2.00.0030.01319.47
7.1.200.0030.00915.55
7.1.100.0040.00817.90
7.1.70.0080.00017.27
7.1.60.0080.00319.79
7.1.50.0200.01734.77
7.1.00.0000.08022.45
7.0.200.0550.00414.88
7.0.80.0400.05319.92
7.0.70.0100.06719.94
7.0.60.0230.05019.87
7.0.50.0970.06320.39
7.0.40.0200.05720.36
7.0.30.0230.05720.41
7.0.20.0200.06020.47
7.0.10.0300.06720.35
7.0.00.0170.06320.38
5.6.280.0030.07021.02
5.6.230.0230.05320.72
5.6.220.0130.05320.65
5.6.210.0070.06720.69
5.6.200.0070.06321.13
5.6.190.0130.05721.03
5.6.180.0130.05721.19
5.6.170.0070.06021.03
5.6.160.0170.05021.07
5.6.150.0070.06021.04
5.6.140.0070.06021.05
5.6.130.0130.05721.07
5.6.120.0270.05021.10
5.6.110.0100.06721.12
5.6.100.0130.06721.08
5.6.90.0170.05321.08
5.6.80.0100.05720.53
5.6.70.0030.06320.51
5.6.60.0030.06020.57
5.6.50.0100.05320.41
5.6.40.0100.05320.45
5.6.30.0070.05720.39
5.6.20.0100.07020.42
5.6.10.0130.05020.50
5.6.00.0130.06320.43
5.5.370.0030.06320.39
5.5.360.0000.06720.48
5.5.350.0130.05720.46
5.5.340.0200.05020.89
5.5.330.0170.05320.91
5.5.320.0200.04720.96
5.5.310.0170.05020.91
5.5.300.0130.05720.88
5.5.290.0130.07020.78
5.5.280.0170.06020.95
5.5.270.0070.07720.95
5.5.260.0130.05720.86
5.5.250.0130.05320.70
5.5.240.0100.05720.25
5.5.230.0170.05020.27
5.5.220.0100.05320.21
5.5.210.0170.06320.16
5.5.200.0130.05020.23
5.5.190.0070.05720.20
5.5.180.0100.05720.21
5.5.160.0000.06320.26
5.5.150.0130.05320.33
5.5.140.0100.05320.19
5.5.130.0170.04720.08
5.5.120.0030.06020.06
5.5.110.0200.05320.32
5.5.100.0070.06020.20
5.5.90.0130.05020.17
5.5.80.0130.05020.14
5.5.70.0100.05320.12
5.5.60.0100.05020.18
5.5.50.0030.06020.13
5.5.40.0170.04320.12
5.5.30.0130.05020.11
5.5.20.0100.05720.25
5.5.10.0070.06020.20
5.5.00.0100.05720.14

preferences:
56.62 ms | 400 KiB | 5 Q