Sereal Comparison Graphs

tsee edited this page Sep 9, 2012 · 4 revisions

Here is a survey of how Sereal stands up against alternative serialization tools in Perl.

The code that generates these, including the data that they were run on can be found in the source code repository at Perl/shared/author_tools/bench.pl. You can run it yourself by building both Encoder and Decoder, then running from the Perl directory:

perl -Mblib=Decoder -Mblib=Encoder Encoder/author_tools/bench.pl --encoder --decoder

There are many flags that control parts of the behaviour of that script. Read the source to find out more.

Array Of Small Hashes With Relations

![Decoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20hashes%20with%20relations%20-%20Decoder%20performance%20per%20second.png)

![Encoded Output Sizes In Bytes] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20hashes%20with%20relations%20-%20Encoded%20output%20sizes%20in%20bytes.png)

![Encoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20hashes%20with%20relations%20-%20Encoder%20performance%20per%20second.png)

Array Of Small Objects With Relations

Same as the example before, but using objects in the place of unblessed hashes.

![Decoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20objects%20with%20relations%20-%20Decoder%20performance%20per%20second.png)

![Encoded Output Sizes In Bytes] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20objects%20with%20relations%20-%20Encoded%20output%20sizes%20in%20bytes.png)

![Encoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/array%20of%20small%20objects%20with%20relations%20-%20Encoder%20performance%20per%20second.png)

Empty Hash

Basically measuring start-up performance. Not very meaningful.

![Decoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/empty%20hash%20-%20Decoder%20performance%20per%20second.png)

![Encoded Output Sizes In Bytes] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/empty%20hash%20-%20Encoded%20output%20sizes%20in%20bytes.png)

![Encoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/empty%20hash%20-%20Encoder%20performance%20per%20second.png)

Large Data Structure

![Decoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/large%20data%20structure%20-%20Decoder%20performance%20per%20second.png)

![Encoded Output Sizes In Bytes] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/large%20data%20structure%20-%20Encoded%20output%20sizes%20in%20bytes.png)

![Encoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/large%20data%20structure%20-%20Encoder%20performance%20per%20second.png)

Small Hash

A small hash with three keys, an integer value, an array of three integers, and a Unicode string.

![Decoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/small%20hash%20-%20Decoder%20performance%20per%20second.png)

![Encoded Output Sizes In Bytes] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/small%20hash%20-%20Encoded%20output%20sizes%20in%20bytes.png)

![Encoder Performance Per Second] (https://raw.github.com/Sereal/Sereal/master/Perl/performance_diagrams/small%20hash%20-%20Encoder%20performance%20per%20second.png)

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.