プロトコルバッファ対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シリアライザーのパフォーマンスを示しています。
Burning Monksベンチマーク は単純なPOCOのシリアル化のパフォーマンスを示し、包括的な Northwindベンチマーク はMicrosoftのNorthwindデータセットのすべてのテーブルの行をシリアル化した結果を示しています。
基本的にプロトコルバッファー( protobuf-net )は、.NETの最速のベースクラスライブラリシリアライザー(XML DataContractSerializer)よりも高速7xです)。また、競合他社よりも小さく2.2xMicrosoftの最もコンパクトなシリアル化形式(JsonDataContractSerializer)よりも小さくなっています。
ServiceStackのテキストシリアライザーは、 Json Serializer が2.58xより遅いバイナリprotobuf-netのパフォーマンスに最も近いprotobuf-netより。
プロトコルバッファはワイヤ用に設計されています。
JSONは単なるテキストであり、解析済みである必要があります。ヒント: "billion" intをエンコードするには、かなり多くの文字が必要になります。Billion= 12文字(長いスケール)、バイナリではuint32_tに収まります。それははるかに悪いことです。