Skip to content

Instantly share code, notes, and snippets.

@xaicron
Created January 22, 2011 07:50
Show Gist options
  • Save xaicron/790963 to your computer and use it in GitHub Desktop.
Save xaicron/790963 to your computer and use it in GitHub Desktop.
use strict;
use warnings;
use Benchmark qw(timethese cmpthese);
use Data::Encoder;
my $module = 'Data::Encoder';
my $josn = $module->load('JSON');
my $dumper = $module->load('Data::Dumper');
my $mpack = $module->load('Data::MessagePack');
my $storable = $module->load('Storable');
my $yaml = $module->load('YAML');
sub run {
my $encoder = shift;
my $enc = $encoder->encode( [qw/foo bar/] );
my $data = $encoder->decode($enc);
}
cmpthese timethese 0, +{
JSON => sub { run($josn) },
Dumper => sub { run($dumper) },
MsgPack => sub { run($mpack) },
Storable => sub { run($storable) },
YAML => sub { run($yaml) },
};
__END__
Benchmark: running Dumper, JSON, MsgPack, Storable, YAML for at least 3 CPU seconds...
Dumper: 3 wallclock secs ( 3.15 usr + 0.00 sys = 3.15 CPU) @ 6300.00/s (n=19845)
JSON: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 42711.50/s (n=133687)
MsgPack: 3 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 52354.95/s (n=163871)
Storable: 3 wallclock secs ( 3.17 usr + 0.00 sys = 3.17 CPU) @ 12921.14/s (n=40960)
YAML: 3 wallclock secs ( 3.25 usr + 0.00 sys = 3.25 CPU) @ 369.23/s (n=1200)
Rate YAML Dumper Storable JSON MsgPack
YAML 369/s -- -94% -97% -99% -99%
Dumper 6300/s 1606% -- -51% -85% -88%
Storable 12921/s 3399% 105% -- -70% -75%
JSON 42712/s 11468% 578% 231% -- -18%
MsgPack 52355/s 14079% 731% 305% 23% --
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment