96 lines
3.2 KiB
Plaintext
Raw Normal View History

2010-05-05 15:50:07 +09:00
NAME
2010-09-06 14:19:31 +09:00
Data::MessagePack - MessagePack serialising/deserialising
2010-05-05 15:50:07 +09:00
SYNOPSIS
my $packed = Data::MessagePack->pack($dat);
my $unpacked = Data::MessagePack->unpack($dat);
DESCRIPTION
2010-09-06 14:19:31 +09:00
This module converts Perl data structures to MessagePack and vice versa.
2010-09-10 20:42:40 +09:00
ABOUT MESSAGEPACK FORMAT
2010-09-06 14:19:31 +09:00
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.
2010-05-05 15:50:07 +09:00
2010-09-10 20:42:40 +09:00
ADVANTAGES
PORTABILITY
Messagepack is language independent binary serialize format.
SMALL SIZE
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.
2010-09-10 20:42:40 +09:00
STREAMING DESERIALIZER
MessagePack supports streaming deserializer. It is useful for
networking such as RPC.
If you want to get more information about the MessagePack format, please
2010-09-10 20:42:40 +09:00
visit to <http://msgpack.org/>.
2010-05-05 15:50:07 +09:00
METHODS
my $packed = Data::MessagePack->pack($data[, $max_depth]);
Pack the $data to messagepack format string.
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
blessed object, because MessagePack is language-independent format.
2010-05-05 15:50:07 +09:00
my $unpacked = Data::MessagePack->unpack($msgpackstr);
unpack the $msgpackstr to a MessagePack format string.
2010-05-05 15:50:07 +09:00
Configuration Variables
$Data::MessagePack::PreferInteger
Pack the string as int when the value looks like int(EXPERIMENTAL).
2010-09-10 20:42:40 +09:00
SPEED
This is the result of benchmark/serialize.pl and
benchmark/deserialize.pl on my SC440(Linux 2.6.32-23-server #37-Ubuntu
SMP).
2010-09-10 20:42:40 +09:00
-- serialize
JSON::XS: 2.3
Data::MessagePack: 0.20
Storable: 2.21
Benchmark: timing 1000000 iterations of json, mp, storable...
json: 5 wallclock secs ( 3.95 usr + 0.00 sys = 3.95 CPU) @ 253164.56/s (n=1000000)
mp: 3 wallclock secs ( 2.69 usr + 0.00 sys = 2.69 CPU) @ 371747.21/s (n=1000000)
storable: 26 wallclock secs (27.21 usr + 0.00 sys = 27.21 CPU) @ 36751.19/s (n=1000000)
-- deserialize
JSON::XS: 2.3
Data::MessagePack: 0.20
Storable: 2.21
Benchmark: timing 1000000 iterations of json, mp, storable...
json: 4 wallclock secs ( 4.45 usr + 0.00 sys = 4.45 CPU) @ 224719.10/s (n=1000000)
mp: 6 wallclock secs ( 5.45 usr + 0.00 sys = 5.45 CPU) @ 183486.24/s (n=1000000)
storable: 7 wallclock secs ( 7.77 usr + 0.00 sys = 7.77 CPU) @ 128700.13/s (n=1000000)
2010-05-05 15:50:07 +09:00
AUTHORS
Tokuhiro Matsuno
2010-09-06 14:19:31 +09:00
Makamaka Hannyaharamitu
2010-05-05 15:50:07 +09:00
THANKS TO
Jun Kuriyama
2010-09-06 14:19:31 +09:00
Dan Kogai
FURUHASHI Sadayuki
hanekomu
2010-05-05 15:50:07 +09:00
LICENSE
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
SEE ALSO
2010-09-10 20:42:40 +09:00
<http://msgpack.org/> is official web site for MessagePack format.
2010-05-05 15:50:07 +09:00