Home > benchmark-serialize-perl

benchmark-serialize-perl

Benchmark-serialize-perl is a project mainly written in Perl, it's free.

Benchmark::Serialize - Benchmarks of serialization modules

NAME Benchmark::Serialize - Benchmarks of serialization modules

SYNOPSIS use Benchmark::Serialise qw(cmpthese);

    my $structure = {
        array  => [ 'a' .. 'j' ],
        hash   => { 'a' .. 'z' ]
        string => 'x' x 200,
    };

    cmpthese( -5, $structure, qw(:core :json :yaml) );

DESCRIPTION This module encapsulates some basic benchmarks to help you choose a module for serializing data. Note that using this module is only a part of chosing a serialization format. Other factors than the benchmarked might be of relevance!

Included is support for 24 different serialization modules. Also supported
is the Data::Serializer wrapper providing a unified interface for
serialization and some extra features. Benchmarking of specialized modules
made with Protocol Buffers for Perl/XS (protobuf-perlxs) is also available.

See the in-module documentation for more information.

RESULTS

The following is the result from benchmarking the serialization modules
included in the core Perl distribution (Storable and Data::Dumper) and
a couple of well-performing other modules. The 'StructureXS' module is
an XS bases Google ProtocolBuffers class.

The tested datastructure is available from 
  http://github.com/pmakholm/benchmark-serialize-perl/blob/e6263840439b7246c2b87a91b8db489c6eb80400/benchmarks/jvm-serializers/structure.pl

Modules Data::Dumper : 2.128 Identical Data::MessagePack : 0.34 Identical JSON::XS : 2.3 Identical Storable : 2.21 Identical StructureXS : 1.0 Identical

Sizes bytes StructureXS Data::MessagePack JSON::XS Storable Data::Dumper StructureXS 245 -- -36% -48% -53% -82% Data::MessagePack 380 55% -- -19% -26% -72% JSON::XS 468 91% 23% -- -9% -65% Storable 516 111% 36% 10% -- -62% Data::Dumper 1354 453% 256% 189% 162% --

Deflate (perl -> serialized) Rate Data::Dumper Storable StructureXS JSON::XS Data::MessagePack Data::Dumper 8812/s -- -59% -85% -92% -92% Storable 21354/s 142% -- -63% -80% -80% StructureXS 57961/s 558% 171% -- -45% -46% JSON::XS 105411/s 1096% 394% 82% -- -2% Data::MessagePack 107789/s 1123% 405% 86% 2% --

Inflate (serialized -> perl) Rate Data::Dumper StructureXS Data::MessagePack Storable JSON::XS Data::Dumper 11395/s -- -67% -78% -79% -83% StructureXS 34600/s 204% -- -32% -36% -50% Data::MessagePack 50777/s 346% 47% -- -6% -26% Storable 53894/s 373% 56% 6% -- -21% JSON::XS 68620/s 502% 98% 35% 27% --

Roundtrip Rate Data::Dumper Storable StructureXS Data::MessagePack JSON::XS Data::Dumper 4830/s -- -61% -73% -84% -85% Storable 12401/s 157% -- -31% -58% -62% StructureXS 18101/s 275% 46% -- -39% -44% Data::MessagePack 29805/s 517% 140% 65% -- -9% JSON::XS 32582/s 575% 163% 80% 9% --

AUTHOR Peter Makholm, ""

BUGS Please report any bugs or feature requests to "bug-benchmark-serialize at rt.cpan.org", or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Benchmark-Serialize. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

ACKNOWLEDGEMENTS This module started out as a script written by Christian Hansen, see http://idisk.mac.com/christian.hansen/Public/perl/serialize.pl

COPYRIGHT & LICENSE Copyright 2009 Peter Makholm.

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.
Previous:Qardgame