Blame eg/bench_encode.pl

Packit a557cb
use strict;
Packit a557cb
use warnings;
Packit a557cb
use Benchmark qw( cmpthese timethese );
Packit a557cb
Packit a557cb
our $VERSION = '1.00';
Packit a557cb
Packit a557cb
my $wanttime = $ARGV[1] || 5;
Packit a557cb
Packit a557cb
use JSON qw( -support_by_pp -no_export ); # for JSON::PP::Boolean inheritance
Packit a557cb
use JSON::PP ();
Packit a557cb
use JSON::XS ();
Packit a557cb
use utf8;
Packit a557cb
Packit a557cb
my $pp   = JSON::PP->new->utf8;
Packit a557cb
my $xs   = JSON::XS->new->utf8;
Packit a557cb
Packit a557cb
local $/;
Packit a557cb
Packit a557cb
my $json = <>;
Packit a557cb
my $perl = JSON::XS::decode_json $json;
Packit a557cb
my $result;
Packit a557cb
Packit a557cb
Packit a557cb
printf( "JSON::PP %s\n", JSON::PP->VERSION );
Packit a557cb
printf( "JSON::XS %s\n", JSON::XS->VERSION );
Packit a557cb
Packit a557cb
Packit a557cb
print "-----------------------------------\n";
Packit a557cb
print "->encode()\n";
Packit a557cb
print "-----------------------------------\n";
Packit a557cb
Packit a557cb
$result = timethese( -$wanttime,
Packit a557cb
    {
Packit a557cb
        'JSON::PP' => sub { $pp->encode( $perl ) },
Packit a557cb
        'JSON::XS' => sub { $xs->encode( $perl ) },
Packit a557cb
    },
Packit a557cb
    'none'
Packit a557cb
);
Packit a557cb
cmpthese( $result );
Packit a557cb
Packit a557cb
print "-----------------------------------\n";
Packit a557cb
print "->pretty->canonical->encode()\n";
Packit a557cb
print "-----------------------------------\n";
Packit a557cb
Packit a557cb
$pp->pretty->canonical;
Packit a557cb
$xs->pretty->canonical;
Packit a557cb
Packit a557cb
$result = timethese( -$wanttime,
Packit a557cb
    {
Packit a557cb
        'JSON::PP' => sub { $pp->encode( $perl ) },
Packit a557cb
        'JSON::XS' => sub { $xs->encode( $perl ) },
Packit a557cb
    },
Packit a557cb
    'none'
Packit a557cb
);
Packit a557cb
cmpthese( $result );
Packit a557cb
Packit a557cb
print "-----------------------------------\n";
Packit a557cb
Packit a557cb
Packit a557cb
__END__
Packit a557cb
Packit a557cb
=pod
Packit a557cb
Packit a557cb
=head1 SYNOPSYS
Packit a557cb
Packit a557cb
  bench_encode.pl json-file
Packit a557cb
  # or
Packit a557cb
  bench_encode.pl json-file minimum-time
Packit a557cb
Packit a557cb
=head1 DESCRIPTION
Packit a557cb
Packit a557cb
L<JSON::PP> and L<JSON::XS> encoding benchmark.
Packit a557cb
Packit a557cb
=head1 AUTHOR
Packit a557cb
Packit a557cb
makamaka
Packit a557cb
Packit a557cb
=head1 LISENCE
Packit a557cb
Packit a557cb
This library is free software; you can redistribute it and/or modify it
Packit a557cb
under the same terms as Perl itself.
Packit a557cb
Packit a557cb
=cut
Packit a557cb