Skip to content

Instantly share code, notes, and snippets.

@pmakholm
Created June 15, 2009 08:11
Show Gist options
  • Save pmakholm/130005 to your computer and use it in GitHub Desktop.
Save pmakholm/130005 to your computer and use it in GitHub Desktop.
Benchmark of serialization modules
#!/usr/bin/perl
# Originaly at:
# http://idisk.mac.com/christian.hansen/Public/perl/serialize.pl
# Updated by Peter Makholm, June 2009
# http://gist.github.com/130005
# - Added Data::Dumper and a current set of YAML/JSON modules
# - added tags for the -b option: :core, :yaml, :json
# Updated by Peter Makholm, October 2009
# - Moved main logic into Benchmark::Serialize
# see bottom of this script for benchmark results.
use strict;
use warnings;
use Getopt::Long;
use Benchmark::Serialize;
my @benchmark = (); # package names of benchmarks to run
my $iterations = -1; # integer
my $structure = {
array => [ 'a' .. 'j' ],
hash => { 'a' .. 'z' },
string => 'x' x 200
};
Getopt::Long::Configure( 'bundling' );
Getopt::Long::GetOptions(
'b|benchmark=s@' => \@benchmark,
'deflate!' => \$Benchmark::Serialize::benchmark_deflate,
'inflate!' => \$Benchmark::Serialize::benchmark_inflate,
'i|iterations=i' => \$iterations,
'o|output=s' => \$Benchmark::Serialize::output,
's|structure=s' => sub {
die "Structure option requires YAML.\n"
unless YAML->require;
$structure = YAML::LoadFile( $_[1] );
}
) or exit 1;
@benchmark = ("all") unless @benchmark;
Benchmark::Serialize::cmpthese($iterations, $structure, @benchmark);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment