プロトコルバッファーとBSON(バイナリーJSON)または一般的なJSONのパフォーマンス特性に関する情報はありますか?
- ワイヤーサイズ
- シリアル化速度
- 逆シリアル化速度
これらは、HTTPでの使用に適したバイナリプロトコルのようです。私は、C#環境の長期的にはどちらが良いか疑問に思っています。
BSONとProtocol Buffersで読んでいた情報がいくつかあります。
プロトコルバッファーとBSON(バイナリーJSON)または一般的なJSONのパフォーマンス特性に関する情報はありますか?
これらは、HTTPでの使用に適したバイナリプロトコルのようです。私は、C#環境の長期的にはどちらが良いか疑問に思っています。
BSONとProtocol Buffersで読んでいた情報がいくつかあります。
回答:
Thriftは、プロトコルバッファのような別の代替手段でもあります。
これらのテクノロジーのシリアライゼーション/デシリアライゼーションおよびワイヤサイズに関するJavaコミュニティからの優れたベンチマークがあります:https : //github.com/eishay/jvm-serializers/wiki
一般に、JSONのワイヤーサイズはわずかに大きく、DeSerはわずかに悪くなりますが、ユビキタス性と、ソースIDLなしで簡単に解釈できる機能に勝っています。最後のポイントは、Apache Avroが解決しようとしていることであり、パフォーマンスの点で両方に勝っています。
MicrosoftはC#NuGetパッケージをリリースしましたMicrosoft.Hadoop.Avroを。
この投稿では、JSON、BSON、XMLを含む.NETのシリアル化速度とサイズを比較しています。
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
以下は、人気のある.NETシリアライザーのパフォーマンスを示す最近のベンチマークです。
バーニング僧侶ベンチマークは、包括しながら、簡単なPOCOのシリアライズのパフォーマンスを示してNorthwindのベンチマークは、Microsoftのノースウィンドデータセットのすべての表の行をシリアライズを合わせた結果を示しています。
基本的に、プロトコルバッファー(protobuf-net)は、.NETの最速の基本クラスライブラリシリアライザー(XML DataContractSerializer)よりも約7倍高速です。また、Microsoftの最もコンパクトなシリアル化形式(JsonDataContractSerializer)よりも2.2倍も小さいため、競合製品よりも小さくなっています。
ServiceStackのText シリアライザーは、Jsonシリアライザーがprotobuf-netよりも2.58 倍遅いだけであるバイナリprotobuf-netのパフォーマンスに最も近いものです。
プロトコルバッファは、ワイヤ用に設計されています。
JSONは単なるテキストであり、解析する必要があります。ヒント: "billion" intをエンコードすると、かなりの文字数が必要になります。Billion= 12文字(長尺)、バイナリでは、uint32_tに収まりますdoubleをエンコードしようとするとどうなるでしょうか。それはFAR FARより悪くなるでしょう。
the wire
はネットワークのみを意味します。今、非常に多くの無線ネットワークを使用していると、奇妙に聞こえるかもしれません。