Data::MessagePack(3pm) | User Contributed Perl Documentation | Data::MessagePack(3pm) |
Data::MessagePack - MessagePack serializing/deserializing
use Data::MessagePack; my $mp = Data::MessagePack->new(); $mp->canonical->utf8->prefer_integer if $needed; my $packed = $mp->pack($dat); my $unpacked = $mp->unpack($dat);
This module converts Perl data structures to MessagePack and vice versa.
MessagePack is a binary-based efficient object serialization format. It enables to exchange structured objects between many languages like JSON. But unlike JSON, it is very fast and small.
say length(JSON::XS::encode_json({a=>1, b=>2})); # => 13 say length(Storable::nfreeze({a=>1, b=>2})); # => 21 say length(Data::MessagePack->pack({a=>1, b=>2})); # => 7
The MessagePack format saves memory than JSON and Storable format.
If you want to get more information about the MessagePack format, please visit to <http://msgpack.org/>.
This method throws an exception when the perl structure is nested more than $max_depth levels(default: 512) in order to detect circular references.
Data::MessagePack->pack() throws an exception when encountering a blessed perl object, because MessagePack is a language-independent format.
In other words, this property tell $mp to deal with text strings. See perlunifaq for the meaning of text string.
This variable is deprecated. Use "$msgpack->prefer_integer" property instead.
This is a result of benchmark/serialize.pl and benchmark/deserialize.pl on my SC440(Linux 2.6.32-23-server #37-Ubuntu SMP). (You should benchmark them with your data if the speed matters, of course.)
-- serialize JSON::XS: 2.3 Data::MessagePack: 0.24 Storable: 2.21 Benchmark: running json, mp, storable for at least 1 CPU seconds... json: 1 wallclock secs ( 1.00 usr + 0.01 sys = 1.01 CPU) @ 141939.60/s (n=143359) mp: 1 wallclock secs ( 1.06 usr + 0.00 sys = 1.06 CPU) @ 355500.94/s (n=376831) storable: 1 wallclock secs ( 1.12 usr + 0.00 sys = 1.12 CPU) @ 38399.11/s (n=43007) Rate storable json mp storable 38399/s -- -73% -89% json 141940/s 270% -- -60% mp 355501/s 826% 150% -- -- deserialize JSON::XS: 2.3 Data::MessagePack: 0.24 Storable: 2.21 Benchmark: running json, mp, storable for at least 1 CPU seconds... json: 0 wallclock secs ( 1.05 usr + 0.00 sys = 1.05 CPU) @ 179442.86/s (n=188415) mp: 0 wallclock secs ( 1.01 usr + 0.00 sys = 1.01 CPU) @ 212909.90/s (n=215039) storable: 2 wallclock secs ( 1.14 usr + 0.00 sys = 1.14 CPU) @ 114974.56/s (n=131071) Rate storable json mp storable 114975/s -- -36% -46% json 179443/s 56% -- -16% mp 212910/s 85% 19% --
This module can unpack 64 bit integers even if your perl does not support them (i.e. where "perl -V:ivsize" is 4), but you cannot calculate these values unless you use "Math::BigInt".
Tokuhiro Matsuno
Makamaka Hannyaharamitu
gfx
Jun Kuriyama
Dan Kogai
FURUHASHI Sadayuki
hanekomu
Kazuho Oku
syohex
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
<http://msgpack.org/> is the official web site for the MessagePack format.
Data::MessagePack::Unpacker
AnyEvent::MPRPC
2022-10-20 | perl v5.36.0 |