#!/usr/bin/perl
#===============================================================================
#
# FILE: bench_shared.pl
#
# USAGE: ./bench_shared.pl
#
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: YOUR NAME (),
# COMPANY:
# VERSION: 1.0
# CREATED: 06/03/2011 02:56:06 PM
# REVISION: ---
#===============================================================================
use strict;
use warnings;
use ExtUtils::testlib;
use Storable::AMF0 qw(freeze parse_serializator_option thaw);
use Storable::AMF qw(freeze3 thaw3 dclone freeze0 thaw0);
use Benchmark qw(cmpthese);
use Data::Dumper;
my $obj = [ 1 .. 10, { a=> "Hello", b=> "Word", c=> "Mother" }, "Litrebol" ];
my $bobj = [ map dclone( $obj ), 1..10 ];
$bobj = [ map [], 1..50 ];
my $sobj = { a =>1, b=>1, c=>1 } ;#$sobj = {} ;
my $opt_targ = parse_serializator_option( "+targ" );
my $opt_def = parse_serializator_option( "-targ" );
my $option = parse_serializator_option( "+prefer_number" );
my $shared = $opt_targ;
my $storage;
#my $shared = 0 ;# Storable::AMF0::amf_tmp_storage( $opt_targ );
my $ff_obj = freeze0( $obj );
my $ff_sobj = freeze0( $sobj );
my $ff_bobj = freeze0( $bobj );
my $ff_obj3 = freeze3( $obj );
my $ff_sobj3 = freeze3( $sobj );
my $ff_bobj3 = freeze3( $bobj );
print "AMF0 benchmark\n";
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
bobj_1 => sub {
my $s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
$s = freeze0( $bobj, $shared);
},
bobj_st => sub {
my $s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
$s = freeze0( $bobj, $storage) ;
},
});
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
obj_1 => sub {
my $s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
$s = freeze0( $obj, $shared);
},
obj_st => sub {
my $s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
$s = freeze0( $obj, $storage) ;
},
});
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
sobj_1 => sub {
my $s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
$s = freeze0( $sobj, $shared);
},
sobj_st => sub {
my $s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
$s = freeze0( $sobj, $storage) ;
},
});
print "AMF3 benchmark\n";
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
bobj_1 => sub {
my $s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
$s = freeze3( $bobj, $shared);
},
bobj_st => sub {
my $s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
$s = freeze3( $bobj, $storage) ;
},
});
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
obj_1 => sub {
my $s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
$s = freeze3( $obj, $shared);
},
obj_st => sub {
my $s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
$s = freeze3( $obj, $storage) ;
},
});
$storage = Storable::AMF0::amf_tmp_storage( $opt_targ );
cmpthese( -1,{
sobj_1 => sub {
my $s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
$s = freeze3( $sobj, $shared);
},
sobj_st => sub {
my $s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
$s = freeze3( $sobj, $storage) ;
},
});
exit;
cmpthese( -1,{
obj_1 => sub {
my $s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
$s = thaw( $ff_obj, $option);
},
obj_st => sub {
my $s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
$s = thaw( $ff_obj, $storage) ;
},
});
cmpthese( -1,{
sobj_1 => sub {
my $s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
$s = thaw( $ff_sobj, $option) ;
},
sobj_st => sub {
my $s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
$s = thaw( $ff_sobj, $storage) ;
},
}
);
print "AMF3 benchmark\n";
cmpthese( -1,{
bobj3_1 => sub {
my $s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
$s = thaw3( $ff_bobj3, $option);
},
bobj3_st => sub {
my $s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
$s = thaw3( $ff_bobj3, $storage) ;
},
});
cmpthese( -1,{
obj3_1 => sub {
my $s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
$s = thaw3( $ff_obj3, $option);
},
obj3_st => sub {
my $s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
$s = thaw3( $ff_obj3, $storage) ;
},
});
cmpthese( -1,{
sobj3_1 => sub {
my $s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
$s = thaw3( $ff_sobj3, $option) ;
},
sobj3_st => sub {
my $s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
$s = thaw3( $ff_sobj3, $storage) ;
},
}
);