Viewing file: benchmark.pl (1.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl # Very simple benchmark script to show how slow Readonly.pm is, # and how Readonly::XS solves the problem. use strict; use lib '../lib'; use Readonly; use Benchmark; use vars qw/$feedme/; # # use constant # use constant CONST_LINCOLN => 'Fourscore and seven years ago...';
sub const { $feedme = CONST_LINCOLN; } # # literal constant # sub literal { $feedme = 'Fourscore and seven years ago...'; } # # typeglob constant # use vars qw/$glob_lincoln/; *glob_lincoln = \'Fourscore and seven years ago...';
sub tglob { $feedme = $glob_lincoln; } # # Normal perl read/write scalar # use vars qw/$norm_lincoln/; $norm_lincoln = 'Fourscore and seven years ago...';
sub normal { $feedme = $norm_lincoln; } # # Readonly.pm with verbose API # use vars qw/$ro_lincoln/; Readonly::Scalar $ro_lincoln => 'Fourscore and seven years ago...';
sub ro { $feedme = $ro_lincoln; } # # Readonly.pm with simple API # use vars qw/$ro_simple_lincoln/; Readonly $ro_simple_lincoln => 'Fourscore and seven years ago...';
sub ro_simple { $feedme = $ro_simple_lincoln; } # # Readonly.pm w/o Readonly::XS # use vars qw/$rotie_lincoln/; { local $Readonly::XSokay = 0; # disable XS Readonly::Scalar $rotie_lincoln => 'Fourscore and seven years ago...'; }
sub rotie { $feedme = $rotie_lincoln; } my $code = {const => \&const, literal => \&literal, tglob => \&tglob, normal => \&normal, ro => \&ro, ro_simple => \&ro_simple, rotie => \&rotie, }; unless ($Readonly::XSokay) { print "Readonly::XS module not found; skipping that test.\n"; delete $code->{roxs}; } timethese(2_000_000, $code);
|