この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 14559|答える: 0

[出典] Java kryo/protobuf/protostuff のシリアライズまたは JSON パフォーマンス比較

[リンクをコピー]
掲載地 2019/07/15 21:16:23 | | |
Javaオブジェクトのシリアライズに関しては、JSONを使うのと一般的なシリアライズツールを使うことの違いを時間的・空間的な性能の観点でテストしたいと考えています。

JSONはFastJsonを使うことを選びます。

シリアライズツールはProtostuffとKyroを使っています。 なぜプロトブフを使わないのですか? 数百もの既存プロパティを持つJavaクラスに対して、新しいマッチングプロトファイルを作成するのは少し人間的すぎると感じます。 ProtostuffはProtobufの改良版で、KyroのようにJavaオブジェクトを直接シリアライズできますが、Protobufのような中間プロセスは少なくなります。 HessionやJava(直列化付き)などは、KryoやProtobufよりもパフォーマンスがかなり劣ると言われているので、何を期待すればいいのか分かりません。

簡単なテストの結果、ギャップはかなり明らかだったので、特別な評価を行う必要はないと感じました。 ログの一段落を切り取って送れば、みんなが感じる。

コスト時間はSystem.nanoTime(); これら3つすべてがデフォルトの構成で、設定は一切ありません。
シリアライズ後のスペースフットプリントはProtostuffよりやや低く、どちらもJSONよりはるかに大きいです。 これは理解しやすいです。結局のところ、json文字列は読みやすいので、無理にやりすぎないでください。
シリアライズとデシリアライズにかかる時間はFastJSON上のKyroよりも長く、その違いはかなり明白です。

結論として、特にスペースに厳しい要件がなければ、Protostuffが最良の選択肢かもしれません。 ProtostuffにはKyroに対する追加の利点があります。つまり、javaクラスがシリアライズの前後にフィールドを追加し(これは実際のビジネスでは避けられない)、Kyroは役に立たなくなります。 ただし、プロトスタッフはクラスの最後に追加され、太陽系列のJDKを使う限り使えます。 したがって、キャッシュなどのシナリオでシリアライズが使われ、シリアライズされたオブジェクトを長期間保存する必要がある場合、プロトスティックしか選択できません。

もちろん、読みやすさが必要な場合はjsonしか使えません。




先の:asp.net セッションID名をカスタマイズする
次に:.NETプラットフォーム下でのProtobufとJSONのパフォーマンス比較
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com