Skip to content

Instantly share code, notes, and snippets.

@preaction
Last active November 22, 2016 18:14
Show Gist options
  • Save preaction/22b0fc7fb0708db3314dba2cdb7ca9b3 to your computer and use it in GitHub Desktop.
Save preaction/22b0fc7fb0708db3314dba2cdb7ca9b3 to your computer and use it in GitHub Desktop.
Benchmark of using Module::Runtime to load Beam::Listener every time
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 );
},
} );
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% --
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