Mojo::JSON VS JSON::PP
Решил проверить производительность Mojo::JSON Интересовала, естественно, производительность в сравнении с JSON::PP.
Колоссальная производительность JSON::XS лишает смысла сравнивать его с перловыми реализациями.
Результаты
Тестирование показало, что Mojo::JSON в 1.5 раза быстрее чем JSON::PP при сериализации и в почти в 3 раза быстрее при десериализации. Очень даже неплохо.Естественно, JSON::XS вне конкуренции, он в 40 раз быстрее чем Mojo::JSON при сериализации и в 30 раз быстрее при десериализации.
Если мы посмотрим на абсолютные цифры производительности Mojo::JSON, то 3-5 тыс вызовов в секунду хватит для большинства проектов. Кроме того, в тесте использовалась достаточно сложная структура данных. Ну и всегда можно переключится на JSON::XS
Rate json_pp_encode mojo_json_encode json_xs_encode json_pp_encode 3724/s -- -33% -98% mojo_json_encode 5581/s 50% -- -98% json_xs_encode 239761/s 6339% 4196% -- Rate json_pp_decode mojo_json_decode json_xs_decode json_pp_decode 1315/s -- -58% -99% mojo_json_decode 3150/s 140% -- -97% json_xs_decode 99643/s 7479% 3064% --
Далее исходник теста
#!/usr/bin/perl use strict; use warnings; use Benchmark 'cmpthese'; use Mojo::JSON; use JSON; use JSON::XS; use JSON::PP; my $mojo_json = Mojo::JSON->new; my $json_xs = JSON::XS->new(); my $json_pp = JSON::PP->new(); my $hashref = {'aaaa'..'aaaz', qq =>[1..50, {'aaaa'..'aaaf'}]}; my $string = $json_xs->encode($hashref); sub mojo_json_encode { $mojo_json->encode($hashref); } sub json_xs_encode { $json_xs->encode($hashref); } sub json_pp_encode { $json_pp->encode($hashref); } sub mojo_json_decode { $mojo_json->decode($string); } sub json_xs_decode { $json_xs->decode($string); } sub json_pp_decode { $json_pp->decode($string); } cmpthese(-2, { mojo_json_encode => \&mojo_json_encode, json_xs_encode => \&json_xs_encode, json_pp_encode => \&json_pp_encode }); cmpthese(-2, { mojo_json_decode => \&mojo_json_decode, json_xs_decode => \&json_xs_decode, json_pp_decode => \&json_pp_decode });
4 коммент.:
В помощь:
http://search.cpan.org/perldoc?Benchmark::Serialize
2alienator:
Я в курсе, даже в начале поста дал ссылку на свой старый пост, с результатами Benchmark::Serialize. :)
s/MOJO::PP/JSON::PP/
спасибо, исправил.
Отправить комментарий
Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)