JSONとMojo::JSONのencodeベンチマーク
最近mojoliciousを触る機会が多いです。
でJSON使う要件が出てきて、render_jsonってのがあるけど何使ってんのかなーと追ってみたら
Mojo::JSONというのモジュールで自前実装してるっぽい。
これそのまま使えばいいんじゃね?ということで
いちおうベンチマーク取ってみた。
ベンチマークスクリプト
#!/usr/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); use JSON::PP; use JSON::XS; use Mojo::JSON; my $count = 100000; my $obj = { id => ["foo", "bar", { aa => 'bb'}], hoge => 'boge', no => 123 , bo => "true" }; my $comp = timethese( $count, { json_pp => \&json_pp, json_xs => \&json_xs, mojo_json => \&mojo_json, } ); cmpthese $comp; sub json_pp { my $js = JSON::PP->new->encode($obj); } sub json_xs { my $js = JSON::XS->new->encode($obj); } sub mojo_json { my $js = Mojo::JSON->new->encode($obj); }
結果
Rate mojo_json json_pp json_xs mojo_json 9285/s -- -4% -97% json_pp 9625/s 4% -- -97% json_xs 285714/s 2977% 2869% --