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 . 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.