An open API service indexing awesome lists of open source software.

https://github.com/wx257osn2/json_parser_test

JSONパーサの速度測ってみたらqiがやたら遅くて謎
https://github.com/wx257osn2/json_parser_test

Last synced: 3 months ago
JSON representation

JSONパーサの速度測ってみたらqiがやたら遅くて謎

Awesome Lists containing this project

README

        

追記あり(一番下)

元ネタ : http://mattn.kaoriya.net/software/lang/c/20130215160508.htm

なんとなく、「Boost.Spirit.Qiってどうなんだろう」と気になったので
・rapidjson(http://code.google.com/p/rapidjson/)
・picojson(https://github.com/kazuho/picojson)
・闇の魔法陣(https://github.com/kikairoya/black_circle/) のQiによるjsonパーサ
・闇の魔法陣のパーサのデータ部分をBoost.VariantからBoost.Anyに書き換えた奴
に、元ネタ同様「mattnさんのブログのJSONフィード」を投げてタイトルを列挙、
速度を比較してみることにしました。

元ネタとの違いは
・ファイルリードは1回だけにしました。IOで速度に影響出るとアレなので。
・標準エラーの捨て方知らないので結果の出力を標準エラーに、
パース後のデータの列挙を標準出力にしました。
・闇の魔法陣のjsonパーサは(元々Twitter用だからか)日本語が読めなかったので
勝手に元ネタのデータをエスケープ(\uほげほげ)して使ってます。

で、やってみたんですけど。

g++ test.cpp -std=c++11 -Wall -o test -O3
test > nul
rapidjson score: 2580
picojson score: 6051
qi_any score: 29783
circle score: 29921

なんか、Qiの実装が極端に遅い。
「Qiは速い」と聞いてたのに、他の2つと比べて桁が1つ違う。
これはいったい何が原因なんでしょう?それとも、そもそもQiは遅い?

追記 : 結論としては「闇の魔法陣の実装が(少なくとも今回のデータに対しては)優れていない」
ということになりました。 http://togetter.com/li/466623