私は最終的に、実際のjson libを使用するためのjson出力を生成する安らかなWebサービスをリファクタリングしています。手動でjsonをStringBuilderに手動で構築し、出力に出力します。 スピードは非常に重要です。現在、私は主題に関して非常に貧弱なパフォーマンスを見ています。 私は4つのスレッドが〜4k要求をまとめて実行している小さなベンチマークテストを行っています。これはStringBuilderで5,5秒、JsonGeneratorで134秒かかる。 私は何か間違ったことをしたいと思っています。 このガイドに従っています:http://www.journaldev.com/2315/java-json-examplejavax.json.stream.JsonGeneratorをスピードアップする方法?
スピードを上げるために他のライブラリを調べるべきですか?彼らは私のアプリサーバ(ガラス魚)それは確かに間違いだった
UPDATE上に既に存在しているように私は本当に、オラクルのLIBSを使用して好む - しかし、私は私の非常に自身のJsonGeneratorを、実装の動きを通過しなかったました
- のStringBuilderがかかった:選択肢のどれよりも全体の多くより良い実行するそうです4319ミリ秒
- FastJsonGeneratorました:1969ミリ秒(私の赤ちゃん)
- JsonGeneratorがかかった:3550ミリ秒(Json.createJsonGenerator)
- JsonObjectは取っ:84829ミリ秒(javax.json.JsonObjectBuilder)
は私がGitHubの上にコードを置く:https://github.com/steffenschumacher/FastJsonGenerator 私の怠惰は、適切なテストを書くことから私を保持し、それは私にそれよりも多くの時間をコストアップ終了〜する必要があります。私の元のテストには欠陥た:
- 実際のデータ
- は、JSONの答え
- を解析する上でCPU時間を費やして取得するためにデータベース接続に依存し、実際に地元のHTTP経由で応答を渡すにCPU時間を過ごしました。
GitHubコードは、出力を/ dev/nullに書き込み、解析せず、動的データを使用せず、事前にインスタンス化されたデータを使用します。 すべての点をありがとう - 私は今私が必要なものがあると思う。
jsonの唯一のJavaライブラリは、良いStringBuilderアプローチよりも遅くなります。 –
@ KrzysztofCichockiしかし、第20因子は疑わしい。 – lexicore
私はそれを最初にプロファイリングしようとします。時間の違いは疑わしいです。私はJSONライブラリ対StringBuilderの減速を期待するだろうが、それほど劇的ではない。コードに問題がある可能性があります。 – lexicore