2011-06-30 12 views
4

Webサービスの結果(明らかにjson)をjsonオブジェクトに変換するためにorg.json。*ライブラリを使用しています。私の問題は、JSONObjectとJSONArrayのコンストラクタがオブジェクトを構築するのに時間がかかることです。私は非常に大量のデータを(3〜5個のキーでそれぞれ1〜100個の配列アイテムに)渡すわけではありませんが、わずか4〜5個でもコンストラクタが終了するまでに数秒かかります。JSONオブジェクトを高速化

これをスピードアップする方法はありますか?私が使用できるより高速のライブラリがありますか?

表示するコードはあまりありません。

JSONArray arrayjson = new JSONArray(json); 

ここで、jsonは文字列です。

+0

あなたの問題は、JSONライブラリとはほとんど関係がありませんが、I/Oやその他の奇妙な偶然に関連しています。問題を再現する[SSCC Example](http://sscce.org/)を作成できますか? – phihag

+0

いくつかのコードを提供してください:不十分な変数の宣言とガベージコレクタへの呼び出しが多すぎると遅延が発生する可能性がありますか? – olamotte

答えて

3

gsonを試してみることもできます。このarticleは、Androidと他の選択肢ではかなり良いパフォーマンスを示しているようです。 Jacksonは別の良い代替手段かもしれません。

+0

ありがとうございます。私はgsonに良い表情を与え、改善を報告します。 – Andrew

+0

参照されている記事には、テスト版の改良版のリファレンスが含まれています。ここでは、JacksonがAndroidのGsonよりもはるかに高速であることが示されています。 –

3

https://github.com/eishay/jvm-serializers/wikiのパフォーマンス結果によると、gson.toJson(myObject)などの文字列でdatabindを使用してシリアル化すると、GsonはJacksonより10倍以上遅くなります。 FastJSONはこの同じテストでJacksonを2〜3%上回った。

デシリアライゼーションのパフォーマンスは、GsonがJacksonよりも9倍以上遅く、Jacksonと比べてFastJSONが約0.5%高速です。

注:現在のテスト結果には、Gson 1.6が使用されています。 Gson 1.7.1では、データバインドのパフォーマンスがGson 1.6よりも10〜15%向上しました(ただし、手動および手動/ツリーソリューションでは改善は見られませんでした)。その結果はすぐに更新されるとうまくいくでしょう。

+0

どのようにfastJSONのサンプルコードを使用するか。 –