3v4l.org

run code in 300+ PHP versions simultaneously
<?php class HardcodedLocator { public function getFoo() { return null; } } class ConfigurableLocator { protected $services = array(); public function set( $name, $value ) { if ( isset( $this->services[$name] ) ) { throw new LogicException( 'Cannot redefine!' ); } $this->services[$name] = $value; } public function get( $name ) { if ( !isset( $this->services[$name] ) ) { throw new LogicException( 'No such service' ); } return $this->services[$name](); } } $hl = new HardcodedLocator(); $cl = new ConfigurableLocator(); $cl->set( 'foo', function() { return null; } ); $rounds = 10000; $htime = microtime( true ); for ( $i = 0; $i < $rounds; $i++ ) { $hl->getFoo(); } $htime = microtime( true ) - $htime; $ctime = microtime( true ); for ( $i = 0; $i < $rounds; $i++ ) { $cl->get( 'foo' ); } $ctime = microtime( true ) - $ctime; echo 'overhead: ' . ( ( $ctime - $htime ) / $rounds );
Output for 7.4.0
overhead: 9.2506408691406E-8
Output for 7.3.12
overhead: 1.3518333435059E-7
Output for 7.3.11
overhead: 1.4750957489014E-7
Output for 7.3.10
overhead: 9.3889236450195E-8
Output for 7.3.9
overhead: 9.5796585083008E-8
Output for 7.3.8
overhead: 9.009838104248E-8
Output for 7.3.7
overhead: 1.5830993652344E-7
Output for 7.3.6
overhead: 1.3277530670166E-7
Output for 7.3.5
overhead: 1.5029907226562E-7
Output for 7.3.4
overhead: 9.6797943115234E-8
Output for 7.3.3
overhead: 9.2291831970215E-8
Output for 7.3.2
overhead: 9.0599060058594E-8
Output for 7.3.1
overhead: 1.3022422790527E-7
Output for 7.3.0
overhead: 1.8160343170166E-7
Output for 7.2.25
overhead: 1.1472702026367E-7
Output for 7.2.24
overhead: 1.3971328735352E-7
Output for 7.2.23
overhead: 9.6011161804199E-8
Output for 7.2.22
overhead: 8.8977813720703E-8
Output for 7.2.21
overhead: 8.9192390441895E-8
Output for 7.2.20
overhead: 8.5020065307617E-8
Output for 7.2.19
overhead: 8.6498260498047E-8
Output for 7.2.18
overhead: 9.4509124755859E-8
Output for 7.2.17
overhead: 1.1281967163086E-7
Output for 7.2.13
overhead: 8.7404251098633E-8
Output for 7.2.12
overhead: 9.150505065918E-8
Output for 7.2.11
overhead: 1.0137557983398E-7
Output for 7.2.10
overhead: 1.227855682373E-7
Output for 7.2.9
overhead: 8.552074432373E-8
Output for 7.2.8
overhead: 1.1780261993408E-7
Output for 7.2.7
overhead: 1.8210411071777E-7
Output for 7.2.6
overhead: 8.7285041809082E-8
Output for 7.2.5
overhead: 7.01904296875E-8
Output for 7.2.4
overhead: 1.3320446014404E-7
Output for 7.2.3
overhead: 1.1692047119141E-7
Output for 7.2.2
overhead: 1.434326171875E-7
Output for 7.2.1
overhead: 1.1022090911865E-7
Output for 7.2.0
overhead: 9.5605850219727E-8
Output for 7.1.33
overhead: 1.9359588623047E-7
Output for 7.1.32
overhead: 2.9208660125732E-7
Output for 7.1.31
overhead: 2.985954284668E-7
Output for 7.1.30
overhead: 3.4580230712891E-7
Output for 7.1.29
overhead: 1.2118816375732E-7
Output for 7.1.28
overhead: 1.8913745880127E-7
Output for 7.1.27
overhead: 1.8711090087891E-7
Output for 7.1.26
overhead: 1.5678405761719E-7
Output for 7.1.25
overhead: 2.4359226226807E-7
Output for 7.1.7
overhead: 6.256103515625E-8
Output for 7.1.6
overhead: 1.7433166503906E-7
Output for 7.1.5
overhead: 1.1551380157471E-7
Output for 7.1.0
overhead: 1.0471343994141E-7
Output for 7.0.20
overhead: 6.1392784118652E-8
Output for 7.0.6
overhead: 8.4209442138672E-8
Output for 7.0.5
overhead: 1.004695892334E-7
Output for 7.0.4
overhead: 6.7329406738281E-8
Output for 7.0.3
overhead: 6.5398216247559E-8
Output for 7.0.2
overhead: 6.4516067504883E-8
Output for 7.0.1
overhead: 9.7513198852539E-8
Output for 7.0.0
overhead: 5.7697296142578E-8
Output for 5.6.28
overhead: 2.3787021636963E-7
Output for 5.6.21
overhead: 1.9843578338623E-7
Output for 5.6.20
overhead: 1.4479160308838E-7
Output for 5.6.19
overhead: 2.1507740020752E-7
Output for 5.6.18
overhead: 2.0792484283447E-7
Output for 5.6.17
overhead: 1.4708042144775E-7
Output for 5.6.16
overhead: 1.5151500701904E-7
Output for 5.6.15
overhead: 1.4321804046631E-7
Output for 5.6.14
overhead: 2.8629302978516E-7
Output for 5.6.13
overhead: 2.2420883178711E-7
Output for 5.6.12
overhead: 2.302885055542E-7
Output for 5.6.11
overhead: 2.2962093353271E-7
Output for 5.6.10
overhead: 1.7707347869873E-7
Output for 5.6.9
overhead: 2.8040409088135E-7
Output for 5.6.8
overhead: 1.460075378418E-7
Output for 5.5.35
overhead: 2.2280216217041E-7
Output for 5.5.34
overhead: 2.0229816436768E-7
Output for 5.5.33
overhead: 2.504825592041E-7
Output for 5.5.32
overhead: 1.9271373748779E-7
Output for 5.5.31
overhead: 1.8367767333984E-7
Output for 5.5.30
overhead: 2.5858879089355E-7
Output for 5.5.29
overhead: 2.5601387023926E-7
Output for 5.5.28
overhead: 2.593994140625E-7
Output for 5.5.27
overhead: 2.4268627166748E-7
Output for 5.5.26
overhead: 2.5680065155029E-7
Output for 5.5.25
overhead: 2.1471977233887E-7
Output for 5.5.24
overhead: 2.424955368042E-7

preferences:
115.21 ms | 401 KiB | 90 Q