3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface TemplateInterface { } class HtmlTemplateEngine { function process(HtmlTemplate $template) { $outerTemplate = $template->getOuterTemplate(); $templateContent = $template->getTemplateContent(); if (!is_null($outerTemplate)) { $outerTemplate->setInnerTemplateContent($templateContent); return $this->process($outerTemplate); } return $templateContent; } } abstract class HtmlTemplate implements TemplateInterface { private $outerTemplate; private $innerTemplateContent; abstract public function render(); public function getTemplateContent() { ob_start(); $this->render(); return ob_get_clean(); } public function getOuterTemplate() { return $this->outerTemplate; } public function setOuterTemplate(HtmlTemplate $template) { $this->outerTemplate = $template; } public function getInnerTemplateContent() { return $this->innerTemplateContent; } public function setInnerTemplateContent($templateContent) { $this->innerTemplateContent = $templateContent; } } class MyOuterHtmlTemplate extends HtmlTemplate { public function render() { ?> <!DOCTYPE html> <html> <head> <title>Test</title> </head> <body> <h1>This is My Outer Template</h1> <article> <?= $this->getInnerTemplateContent(); ?> </article> </body> </html> <?php } } class MyInnerHtmlTemplate extends HtmlTemplate { private $name; public function render() { ?> <h1>This is My Inner Template</h1> <section> <h2>Welcome <?= $this->name; ?></h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam quis dictum urna, at gravida ipsum. In sed bibendum tortor, quis hendrerit ante. Sed auctor imperdiet pretium. Praesent metus nisi, molestie in diam et, hendrerit accumsan nibh. Sed elementum ante a adipiscing rhoncus. Nullam aliquam fringilla mi, nec iaculis diam lobortis vel. Aliquam erat volutpat. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p> <p>Sed et dolor nec dui aliquam pretium. Fusce id arcu metus. Suspendisse ultrices risus vel libero iaculis cursus. Phasellus adipiscing adipiscing tincidunt. Nunc metus eros, imperdiet nec ultricies a, dictum vitae justo. Donec id turpis rhoncus, viverra magna vel, vehicula tellus. Nam in pretium dolor. In at quam volutpat velit aliquam malesuada vitae eu turpis. Nam eget blandit tellus. In rutrum massa enim. Praesent et nisl auctor, pharetra sapien in, pretium ligula. Integer quis turpis elementum mauris cursus ornare id vitae enim. Duis fermentum quis justo et rhoncus. In venenatis lorem et congue ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse vel ipsum imperdiet, vestibulum est sit amet, viverra purus.</p> </section> <?php } public function __construct($name) { $this->name = $name; $this->setOuterTemplate(new MyOuterHtmlTemplate()); } } $templateEngine = new HtmlTemplateEngine(); echo $templateEngine->process(new MyInnerHtmlTemplate('Robert Noodles'));

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.0070.00718.30
8.3.50.0090.00621.14
8.3.40.0100.01018.84
8.3.30.0100.00319.98
8.3.20.0060.00318.95
8.3.10.0080.00021.13
8.3.00.0070.00023.70
8.2.180.0090.00918.54
8.2.170.0070.00722.96
8.2.160.0170.00320.33
8.2.150.0130.00324.18
8.2.140.0070.00024.66
8.2.130.0070.00026.16
8.2.120.0040.00419.53
8.2.110.0030.00619.28
8.2.100.0110.00017.78
8.2.90.0040.00419.05
8.2.80.0040.00419.34
8.2.70.0050.00517.63
8.2.60.0040.00417.93
8.2.50.0040.00418.07
8.2.40.0000.00818.22
8.2.30.0100.00019.41
8.2.20.0000.00717.78
8.2.10.0030.00617.93
8.2.00.0030.00617.69
8.1.280.0100.00725.92
8.1.270.0030.01623.99
8.1.260.0080.00026.35
8.1.250.0060.00328.09
8.1.240.0100.00022.42
8.1.230.0070.00421.00
8.1.220.0000.00818.77
8.1.210.0050.00519.15
8.1.200.0030.00617.47
8.1.190.0040.00417.66
8.1.180.0080.00018.10
8.1.170.0040.00418.50
8.1.160.0080.00018.97
8.1.150.0020.00518.73
8.1.140.0000.00717.39
8.1.130.0050.00317.80
8.1.120.0000.00717.49
8.1.110.0040.00417.56
8.1.100.0040.00417.54
8.1.90.0040.00417.49
8.1.80.0000.00817.54
8.1.70.0050.00317.53
8.1.60.0030.00617.54
8.1.50.0000.00817.42
8.1.40.0030.00517.54
8.1.30.0050.00317.74
8.1.20.0040.00417.65
8.1.10.0040.00417.50
8.1.00.0000.01017.55
8.0.300.0030.00620.10
8.0.290.0030.00617.16
8.0.280.0000.00718.51
8.0.270.0070.00017.24
8.0.260.0070.00016.88
8.0.250.0000.00717.05
8.0.240.0000.00817.16
8.0.230.0070.00017.07
8.0.220.0000.00716.99
8.0.210.0000.00617.04
8.0.200.0030.00317.05
8.0.190.0000.00717.08
8.0.180.0070.00317.02
8.0.170.0070.00017.00
8.0.160.0050.00217.00
8.0.150.0000.00717.03
8.0.140.0080.00017.07
8.0.130.0030.00313.44
8.0.120.0000.00816.86
8.0.110.0000.00817.02
8.0.100.0080.00016.91
8.0.90.0000.00716.86
8.0.80.0090.00616.99
8.0.70.0040.00417.14
8.0.60.0040.00416.87
8.0.50.0070.00017.00
8.0.30.0140.00617.05
8.0.20.0070.01317.40
8.0.10.0070.00016.94
8.0.00.0100.01116.96
7.4.330.0050.00016.74
7.4.320.0000.00816.59
7.4.300.0000.00616.69
7.4.290.0000.00816.56
7.4.280.0000.00816.57
7.4.270.0050.00316.70
7.4.260.0000.00513.45
7.4.250.0050.00316.64
7.4.240.0040.00416.54
7.4.230.0030.00316.65
7.4.220.0080.01216.52
7.4.210.0080.00816.68
7.4.200.0040.00416.65
7.4.190.0040.00416.66
7.4.160.0160.00016.62
7.4.150.0100.00617.40
7.4.140.0060.01217.86
7.4.130.0080.00916.69
7.4.120.0080.00916.50
7.4.110.0120.01616.62
7.4.100.0000.01716.59
7.4.90.0100.01016.39
7.4.80.0070.01019.39
7.4.70.0030.01716.50
7.4.60.0030.01416.62
7.4.50.0000.00816.45
7.4.40.0060.00322.77
7.4.30.0120.00416.50
7.4.00.0090.00715.11
7.3.330.0000.00613.39
7.3.320.0040.00213.34
7.3.310.0000.00716.27
7.3.300.0030.00316.30
7.3.290.0000.01816.43
7.3.280.0060.01116.41
7.3.270.0130.00617.40
7.3.260.0090.00918.24
7.3.250.0110.00616.58
7.3.240.0140.00316.55
7.3.230.0170.00016.39
7.3.210.0070.01116.42
7.3.200.0120.00919.39
7.3.190.0060.01416.26
7.3.180.0090.00616.38
7.3.170.0120.00616.39
7.3.160.0160.00016.29
7.3.120.0050.01414.95
7.3.110.0070.00714.89
7.3.100.0030.01315.02
7.3.90.0070.00714.88
7.3.80.0030.01415.21
7.3.70.0120.00315.06
7.3.60.0060.00314.90
7.3.50.0090.00614.79
7.3.40.0090.00314.55
7.3.30.0070.00714.86
7.3.20.0130.00316.58
7.3.10.0030.01116.50
7.3.00.0070.00716.47
7.2.330.0110.00616.43
7.2.320.0120.00616.61
7.2.310.0060.01216.69
7.2.300.0130.01016.80
7.2.290.0130.01016.84
7.2.250.0070.01315.06
7.2.240.0070.01315.00
7.2.230.0070.01015.07
7.2.220.0080.00814.78
7.2.210.0120.00315.34
7.2.200.0070.00715.05
7.2.190.0030.01515.18
7.2.180.0180.00015.27
7.2.170.0100.00714.90
7.2.60.0070.01016.89
7.2.00.0030.01319.26
7.1.330.0120.00315.56
7.1.320.0030.01515.43
7.1.310.0070.00715.71
7.1.300.0000.01415.55
7.1.290.0070.00715.77
7.1.280.0030.00615.55
7.1.270.0040.01215.80
7.1.260.0070.00315.83
7.1.200.0030.01015.79
7.1.100.0060.00818.24
7.1.70.0000.01617.07
7.1.60.0080.01119.17
7.1.50.0070.01616.93
7.1.00.0070.03022.40
7.0.200.0040.00417.00
7.0.140.0100.06722.00
7.0.100.0070.06719.88
7.0.90.0070.06019.83
7.0.80.0100.05019.83
7.0.70.0100.07019.87
7.0.60.0170.07319.90
7.0.50.0030.05020.22
7.0.40.0070.07720.02
7.0.30.0100.05019.94
7.0.20.0100.08020.06
7.0.10.0070.04320.13
7.0.00.0070.08320.05
5.6.280.0030.07321.16
5.6.250.0130.07720.54
5.6.240.0070.06720.56
5.6.230.0100.04320.46
5.6.220.0070.06020.46
5.6.210.0000.05020.61
5.6.200.0100.06021.01
5.6.190.0030.04321.05
5.6.180.0100.08021.07
5.6.170.0100.08320.92
5.6.160.0130.07321.04
5.6.150.0130.08021.03
5.6.140.0070.04721.00
5.6.130.0170.05720.91
5.6.120.0070.07320.90
5.6.110.0000.08721.01
5.6.100.0100.07320.97
5.6.90.0100.06320.98
5.6.80.0000.05720.46
5.6.70.0130.06020.43
5.6.60.0200.06020.51
5.6.50.0100.07720.29
5.6.40.0130.07720.43
5.6.30.0100.07720.42
5.6.20.0100.03720.40
5.6.10.0030.07720.39
5.6.00.0030.08320.45
5.5.380.0070.04020.47
5.5.370.0070.07320.34
5.5.360.0130.08020.36
5.5.350.0000.07320.31
5.5.340.0070.07020.89
5.5.330.0170.08320.77
5.5.320.0200.07020.71
5.5.310.0030.06720.87
5.5.300.0130.08020.70
5.5.290.0030.05320.73
5.5.280.0100.07720.61
5.5.270.0100.07720.72
5.5.260.0070.08020.77
5.5.250.0070.05320.59
5.5.240.0130.04720.08
5.5.230.0030.08020.27
5.5.220.0070.07720.26
5.5.210.0070.07319.99
5.5.200.0070.05020.19
5.5.190.0030.07319.96
5.5.180.0070.05320.09
5.5.160.0100.07320.25
5.5.150.0030.04320.10
5.5.140.0100.07320.12
5.5.130.0170.07020.18
5.5.120.0070.06020.15
5.5.110.0000.05020.14
5.5.100.0130.07720.10
5.5.90.0070.06320.14
5.5.80.0000.05319.91
5.5.70.0100.06020.02
5.5.60.0200.06019.99
5.5.50.0070.07320.02
5.5.40.0070.07720.05
5.5.30.0130.07020.04
5.5.20.0000.04720.02
5.5.10.0100.04319.91
5.5.00.0130.03320.01
5.4.450.0030.08019.27
5.4.440.0070.07319.44
5.4.430.0130.07019.55
5.4.420.0000.04719.44
5.4.410.0130.07719.07
5.4.400.0070.06718.87
5.4.390.0070.04319.24
5.4.380.0100.06019.00
5.4.370.0070.07019.03
5.4.360.0030.06719.05
5.4.350.0130.05718.95
5.4.340.0130.07718.94
5.4.320.0070.05019.04
5.4.310.0030.06319.03
5.4.300.0030.08019.03
5.4.290.0130.03719.23
5.4.280.0070.07019.08
5.4.270.0030.08019.14
5.4.260.0030.08719.05
5.4.250.0070.07318.89
5.4.240.0070.08019.20
5.4.230.0000.08319.03
5.4.220.0170.06718.89
5.4.210.0130.03719.03
5.4.200.0130.07019.04
5.4.190.0100.06718.89
5.4.180.0100.07719.08
5.4.170.0000.07719.02
5.4.160.0030.03719.18
5.4.150.0070.05319.14
5.4.140.0170.06716.40
5.4.130.0170.06716.37
5.4.120.0100.07316.41
5.4.110.0100.05716.44
5.4.100.0100.07716.32
5.4.90.0030.04716.52
5.4.80.0100.06716.51
5.4.70.0100.07316.52
5.4.60.0130.06716.47
5.4.50.0000.07716.34
5.4.40.0130.06316.52
5.4.30.0000.05016.43
5.4.20.0030.06316.46
5.4.10.0000.05316.34
5.4.00.0030.03715.59
5.3.290.0070.08014.67
5.3.280.0100.07314.72
5.3.270.0100.06314.70
5.3.260.0100.07314.58
5.3.250.0030.06014.62
5.3.240.0000.07714.70
5.3.230.0100.04714.56
5.3.220.0000.07314.64
5.3.210.0100.07014.57
5.3.200.0100.07014.52
5.3.190.0130.06714.55
5.3.180.0130.06714.61
5.3.170.0030.04314.61
5.3.160.0230.05714.66
5.3.150.0170.06014.70
5.3.140.0100.06314.59
5.3.130.0130.07314.58
5.3.120.0000.07714.50
5.3.110.0130.07014.57
5.3.100.0030.08014.05
5.3.90.0000.08314.07
5.3.80.0170.06314.07
5.3.70.0070.07314.04
5.3.60.0070.04313.92
5.3.50.0170.06313.91
5.3.40.0030.04714.05
5.3.30.0030.07713.82
5.3.20.0070.07013.70
5.3.10.0030.04013.82
5.3.00.0070.07313.66
5.2.170.0070.06011.25
5.2.160.0030.06011.23
5.2.150.0070.06311.09
5.2.140.0030.06711.09
5.2.130.0030.03311.18
5.2.120.0030.05711.20
5.2.110.0100.05311.02
5.2.100.0070.05711.24
5.2.90.0000.03711.05
5.2.80.0000.03711.04
5.2.70.0030.05711.15
5.2.60.0000.04711.11
5.2.50.0030.06011.11
5.2.40.0070.04011.02
5.2.30.0130.05310.91
5.2.20.0000.06011.05
5.2.10.0100.05710.92
5.2.00.0030.05710.70
5.1.60.0030.05710.03
5.1.50.0070.05310.11
5.1.40.0030.06010.10
5.1.30.0030.04310.47
5.1.20.0100.05010.30
5.1.10.0070.05310.16
5.1.00.0030.05310.21
5.0.50.0030.0438.47
5.0.40.0030.0438.49
5.0.30.0070.0438.25
5.0.20.0000.0238.19
5.0.10.0030.0438.29
5.0.00.0070.0408.25
4.4.90.0000.0337.78
4.4.80.0030.0377.78
4.4.70.0000.0377.78
4.4.60.0030.0337.78
4.4.50.0070.0307.78
4.4.40.0000.0477.78
4.4.30.0070.0237.78
4.4.20.0100.0337.78
4.4.10.0000.0277.78
4.4.00.0030.0577.78
4.3.110.0030.0177.78
4.3.100.0000.0377.78
4.3.90.0000.0237.78
4.3.80.0000.0537.78
4.3.70.0000.0237.78
4.3.60.0100.0177.78
4.3.50.0030.0177.78
4.3.40.0000.0237.78
4.3.30.0000.0177.78
4.3.20.0000.0177.78
4.3.10.0000.0177.78
4.3.00.0000.0177.78

preferences:
43.15 ms | 401 KiB | 5 Q