Last active
November 22, 2016 18:14
-
-
Save preaction/22b0fc7fb0708db3314dba2cdb7ca9b3 to your computer and use it in GitHub Desktop.
Benchmark of using Module::Runtime to load Beam::Listener every time
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use v5.024; | |
use warnings; | |
use Benchmark qw( cmpthese ); | |
use Module::Runtime qw( use_module require_module module_notional_filename ); | |
use Beam::Listener; | |
my $cb = sub { }; | |
cmpthese( -5, { | |
'use_module' => sub { | |
use_module( 'Beam::Listener' )->new( callback => $cb ); | |
}, | |
'require_module' => sub { | |
require_module( 'Beam::Listener' ); | |
Beam::Listener->new( callback => $cb ); | |
}, | |
'manual' => sub { | |
CORE::require( module_notional_filename( 'Beam::Listener' ) ); | |
Beam::Listener->new( callback => $cb ); | |
}, | |
'cached' => sub { | |
state $cache = {}; | |
$cache->{ 'Beam::Listener' } = require_module( 'Beam::Listener' ) | |
unless $cache->{ 'Beam::Listener' }; | |
Beam::Listener->new( callback => $cb ); | |
}, | |
'require' => sub { | |
require Beam::Listener; | |
Beam::Listener->new( callback => $cb ); | |
}, | |
'no use' => sub { | |
Beam::Listener->new( callback => $cb ); | |
}, | |
} ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Rate use_module require_module manual require cached no use | |
use_module 101239/s -- -6% -7% -49% -49% -50% | |
require_module 107831/s 7% -- -1% -45% -46% -47% | |
manual 108409/s 7% 1% -- -45% -46% -46% | |
require 196612/s 94% 82% 81% -- -2% -3% | |
cached 199675/s 97% 85% 84% 2% -- -1% | |
no use 201800/s 99% 87% 86% 3% 1% -- | |
Rate use_module require_module manual require cached no use | |
use_module 103084/s -- -7% -8% -48% -48% -50% | |
require_module 110487/s 7% -- -2% -44% -44% -46% | |
manual 112652/s 9% 2% -- -43% -43% -45% | |
require 196550/s 91% 78% 74% -- -0% -5% | |
cached 196655/s 91% 78% 75% 0% -- -5% | |
no use 205983/s 100% 86% 83% 5% 5% -- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gwen perl/Beam-Emitter ‹master› » perl bench.pl | |
Rate use_module require no use | |
use_module 96646/s -- -50% -51% | |
require 192097/s 99% -- -2% | |
no use 195423/s 102% 2% -- | |
gwen perl/Beam-Emitter ‹master› » perl bench.pl | |
Rate use_module require no use | |
use_module 103633/s -- -47% -49% | |
require 197231/s 90% -- -3% | |
no use 203255/s 96% 3% -- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment