質問

プロトコル バッファーと BSON (バイナリ JSON)、または一般的な JSON のパフォーマンス特性に関する情報を持っている人はいますか?

  • 電線サイズ
  • シリアル化速度
  • デシリアライズ速度

これらは、HTTP 上で使用するのに適したバイナリ プロトコルのようです。C# 環境では、長期的にはどちらが良いだろうかと考えています。

以下は私が読んでいた情報です BSON そして プロトコルバッファ.

役に立ちましたか?

解決

リサイクルにも、他のプロトコルバッファのような代替物である。

これらの技術のシリアライズ/デシリアライゼーションのワイヤサイズのJavaコミュニティから良いベンチマークがあります。 https://github.com/eishay/jvm-serializers/wikiする

一般的に、JSONはわずかに大きいワイヤサイズとわずかに悪化DeSerを有するが、遍在ソースIDLなしで簡単に解釈する能力に勝ちます。最後のポイントは、 Apacheのアブロのが解決しようとしている、そしてそれはパフォーマンスの面で両方打つものです。

MicrosoftがC#NuGetパッケージをリリースしました Microsoft.Hadoop.Avroするます。

他のヒント

この投稿には比較しますJSON、BSONやXMLなどの.NETでシリアル化のスピードとサイズ、ます。

のhttp://james.newtonking .COM /アーカイブ/ 2010/01/01 /ネットシリアライゼーション・パフォーマンス・comparison.aspxする

ここにある人気.NETシリアライザのパフォーマンスを示すのいくつかの最近のベンチマークます。

バーニングモンクベンチマークが示す href="http://theburningmonk.com/2011/11/performance-test-json-serializers-part-ii/"包括的な Northwindのベンチマークながら簡単なPOCOのシリアライズのパフォーマンス Microsoftのノースウィンドデータセットのすべての表の行をシリアライズを合わせた結果を示します。

ここに画像の説明を入力します

基本的プロトコルバッファ(いるProtobufネットの)7X の周りで>最速の基本クラスライブラリ.NETでシリアライザ(XML DataContractSerializer)よりも速く。そのこともあるとして、競争よりも小さいの 2.2倍のMicrosoftの最もコンパクトなシリアル化形式(JsonDataContractSerializer)。より小さい

ServiceStackのTextシリアライザは、バイナリいるProtobufネットの JSONシリアライザのパフォーマンスをマッチングに最も近いですのはいるProtobufネットよりも唯一の 2.58x の遅います。

プロトコル バッファはワイヤ用に設計されています。

  1. 非常に小さいメッセージ サイズ - 1 つの側面は、非常に効率的な可変サイズの整数表現です。
  2. 非常に高速なデコード - これはバイナリ プロトコルです。
  3. protobuf は、メッセージのエンコードとデコードのために非常に効率的な C++ を生成します -- ヒント:すべての可変長整数または静的なサイズの項目をエンコードすると、決定的な速度でエンコードおよびデコードされます。
  4. 非常に豊富なデータ モデルを提供し、非常に複雑なデータ構造を効率的にエンコードします。

JSON は単なるテキストであり、 解析された. 。ヒント:「10 億」の int をエンコードするには、かなり多くの文字が必要になります。Billion = 12 文字 (ロングスケール)、バイナリでは uint32_t に収まります。 さて、double をエンコードしてみるとどうでしょうか。それははるかに悪いことになるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top