3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace { class Http { public static function get(string $url, array $params): Response { return new Response(json_encode(['url' => $url, 'params' => $params])); } } class Response { private $data = null; public function __construct($response) { $this->data = $response; } public function json() { return json_decode($this->data, true); } } } namespace Search { interface Specification { public function __invoke(array $params): array; } class Name implements Specification { private $name = null; public function __construct(string $name) { $this->name = $name; } public function __invoke(array $params): array { return [ 'name' => $this->name, ]; } } class Language implements Specification { const DEFAULT = 'en'; private $language = null; public function __construct(string $language) { $this->language = $language; } public function __invoke(array $params): array { return [ 'language' => $this->language ?? 'en', ]; } } class Fuzzy implements Specification { const DEFAULT = true; private $fuzzy = null; public function __construct(bool $fuzzy) { $this->fuzzy = $fuzzy; } public function __invoke(array $params): array { return [ 'fuzzy' => $this->fuzzy, ]; } } class Limit implements Specification { const DEFAULT = 10; private $max = null; public function __construct(int $limit) { $this->limit = $limit; } public function __invoke(array $params): array { return [ 'maxRows' => $this->limit ?: self::DEFAULT, ]; } } } namespace Api { interface Searchable { public function search(\Search\Specification... $criteria); } class Search implements Searchable { private $url = '/search'; private $defaults = [ 'maxRows' => \Search\Limit::DEFAULT, ]; public function search(\Search\Specification ...$criteria) { return \Http::get($this->url, array_reduce( $criteria, fn($params, $criteria) => $criteria($params) + $params, $this->defaults ))->json(); } } } namespace Controller { class Api { private $api; public function __construct(\Api\Searchable $someApi) { $this->api = $someApi; } public function search(string $name, int $limit = \Search\Limit::DEFAULT) { return $this->api->search( new \Search\Name($name), new \Search\Limit($limit) ); } public function lookup( string $name, string $language = \Search\Language::DEFAULT, bool $fuzzy = \Search\Fuzzy::DEFAULT, int $limit = \Search\Limit::DEFAULT ) { return $this->api->search( new \Search\Name($name), new \Search\Language($language), new \Search\Fuzzy($fuzzy), new \Search\Limit($limit) ); } } } namespace { $foo = new \Controller\Api(new \Api\Search()); var_export([ $foo->search('foo'), $foo->search('bar', 25), $foo->search('baz', 1), $foo->lookup('foo'), $foo->lookup('bar', 'de', false, 5), $foo->lookup('baz', 'za', true, 20), ]); }

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.5.00.0150.01220.14
8.4.150.0030.00014.05
8.4.140.0120.00917.77
8.4.130.0160.00517.70
8.4.120.0090.01120.68
8.4.110.0100.00720.79
8.4.100.0090.01018.79
8.4.90.0120.00820.59
8.4.80.0140.00718.83
8.4.70.0100.00718.11
8.4.60.0100.01118.98
8.4.50.0080.00317.90
8.4.40.0030.00619.46
8.4.30.0030.01820.28
8.4.20.0030.00618.87
8.4.10.0100.01019.64
8.3.280.0120.00918.54
8.3.270.0130.00616.76
8.3.260.0140.00716.77
8.3.250.0120.00419.05
8.3.240.0100.00816.88
8.3.230.0040.00716.74
8.3.220.0110.00818.82
8.3.210.0120.00718.47
8.3.200.0090.00216.65
8.3.190.0090.01216.88
8.3.180.0130.00616.86
8.3.170.0130.00618.84
8.3.160.0060.01318.62
8.3.150.0110.00820.71
8.3.140.0070.01116.82
8.3.130.0050.00316.88
8.3.120.0160.00320.81
8.3.110.0130.00620.94
8.3.100.0110.00724.06
8.3.90.0120.00626.77
8.3.80.0060.00317.00
8.3.70.0150.00316.75
8.3.60.0070.01418.33
8.3.50.0070.00718.15
8.3.40.0080.00819.31
8.3.30.0040.01118.85
8.3.20.0080.00024.18
8.3.10.0090.00024.66
8.3.00.0000.00826.16
8.2.290.0110.00820.72
8.2.280.0090.01118.21
8.2.270.0070.01117.01
8.2.260.0120.00319.00
8.2.250.0130.00716.85
8.2.240.0040.00419.13
8.2.230.0040.00422.58
8.2.220.0090.00637.54
8.2.210.0030.00626.77
8.2.200.0060.00318.29
8.2.190.0030.01316.75
8.2.180.0000.02125.92
8.2.170.0110.01118.88
8.2.160.0070.01022.96
8.2.150.0040.00425.66
8.2.140.0080.00024.66
8.2.130.0030.00526.16
8.2.120.0000.00826.16
8.2.110.0070.00419.31
8.2.100.0030.01018.03
8.2.90.0000.00818.34
8.2.80.0030.00618.97
8.2.70.0000.00817.93
8.2.60.0000.00818.22
8.2.50.0000.00818.10
8.2.40.0030.00619.53
8.2.30.0040.00419.36
8.2.20.0060.00318.17
8.2.10.0030.00621.15
8.2.00.0080.00019.41
8.1.330.0090.01122.28
8.1.320.0140.00716.43
8.1.310.0090.00916.82
8.1.300.0040.00717.74
8.1.290.0030.00730.84
8.1.280.0040.01525.92
8.1.270.0050.00323.99
8.1.260.0070.00026.35
8.1.250.0000.00928.09
8.1.240.0090.00019.21
8.1.230.0130.00320.98
8.1.220.0050.00317.74
8.1.210.0060.00318.89
8.1.200.0000.01017.35
8.1.190.0000.00917.23
8.1.180.0000.00818.10
8.1.170.0080.00018.52
8.1.160.0030.00518.94
8.1.150.0050.00218.98
8.1.140.0050.00218.91
8.1.130.0030.00320.14
8.1.120.0000.00717.41
8.1.110.0030.00617.52
8.1.100.0070.00417.50
8.1.90.0050.00317.49
8.1.80.0040.00417.40
8.1.70.0040.00417.52
8.1.60.0030.00517.63
8.1.50.0060.00317.59
8.1.40.0050.00217.56
8.1.30.0030.00617.68
8.1.20.0000.00817.66
8.1.10.0050.00517.62
8.1.00.0030.00617.41
8.0.300.0000.00820.21
8.0.290.0030.00516.88
8.0.280.0050.00218.50
8.0.270.0070.00016.95
8.0.260.0000.00818.64
8.0.250.0000.00717.09
8.0.240.0030.00316.97
8.0.230.0040.00417.12
8.0.220.0040.00417.01
8.0.210.0000.00716.98
8.0.200.0040.00417.06
8.0.190.0040.00417.08
8.0.180.0050.00316.93
8.0.170.0100.00016.93
8.0.160.0040.00417.13
8.0.150.0000.00816.98
8.0.140.0100.00016.88
8.0.130.0000.00613.50
8.0.120.0040.00416.90
8.0.110.0000.00716.91
8.0.100.0000.00816.88
8.0.90.0050.00217.08
8.0.80.0150.00616.98
8.0.70.0150.00016.94
8.0.60.0100.01016.82
8.0.50.0160.00316.95
8.0.30.0060.00916.97
8.0.20.0060.01217.00
8.0.10.0080.00817.11
8.0.00.0080.00917.16
7.4.330.0020.00215.55
7.4.320.0030.00316.55
7.4.300.0040.00416.70
7.4.290.0000.00716.57
7.4.280.0000.00716.65
7.4.270.0000.00716.55
7.4.260.0000.00513.34
7.4.250.0080.00016.45
7.4.240.0020.00516.64
7.4.230.0030.00316.76
7.4.220.0070.00016.55
7.4.210.0100.00516.70
7.4.200.0140.00616.53
7.4.190.0080.00816.71
7.4.180.0030.01216.63
7.4.160.0030.01216.75
7.4.150.0060.01616.61
7.4.140.0120.00616.42
7.4.130.0090.00616.44
7.4.120.0120.00316.54
7.4.110.0150.00316.46
7.4.100.0060.00916.59
7.4.90.0080.00616.52
7.4.80.0060.00916.43
7.4.70.0120.00316.46
7.4.60.0030.01216.54
7.4.50.0080.00816.56
7.4.40.0090.00616.56
7.4.30.0090.00616.36
7.4.20.0090.00616.63
7.4.10.0110.00516.42
7.4.00.0030.01116.64
7.3.330.0100.00016.27
7.3.320.0000.00813.30
7.3.310.0040.00416.18
7.3.300.0000.00716.14
7.3.290.0070.00716.18
7.3.280.0060.00916.20
7.3.270.0030.01316.21
7.3.260.0060.00916.13
7.3.250.0040.01116.14
7.3.240.0070.00716.32
7.3.230.0060.01516.16
7.3.220.0030.01416.13
7.3.210.0040.01116.15
7.3.200.0060.01316.06
7.3.190.0150.00016.14
7.3.180.0070.00716.11
7.3.170.0050.01016.11
7.3.160.0030.01116.14
7.3.150.0110.00316.07
7.3.140.0140.00016.14
7.3.130.0040.01216.06
7.3.120.0110.00716.15
7.3.110.0090.00916.10
7.3.100.0140.00716.04
7.3.90.0100.01016.36
7.3.80.0120.00416.15
7.3.70.0040.01216.24
7.3.60.0030.01716.16
7.3.50.0130.01016.26
7.3.40.0090.00916.26
7.3.30.0050.01416.22
7.3.20.0110.00816.32
7.3.10.0170.00916.17
7.3.00.0070.01016.12

preferences:
169.75 ms | 403 KiB | 5 Q