C# 协议缓冲区与JSON或BSON
有人知道协议缓冲区相对于BSON(二进制JSON)或相对于JSON的性能特征吗C# 协议缓冲区与JSON或BSON,c#,json,comparison,protocol-buffers,bson,C#,Json,Comparison,Protocol Buffers,Bson,有人知道协议缓冲区相对于BSON(二进制JSON)或相对于JSON的性能特征吗 导线尺寸 序列化速度 反序列化速度 这些似乎是通过HTTP使用的好的二进制协议。我只是想知道从长远来看,对于C#环境来说,哪一个更好 以下是我正在阅读的一些信息。协议缓冲区是为有线电视设计的: 非常小的消息大小-一个方面是非常有效的可变大小整数表示 非常快的解码-这是一个二进制协议 原型Bufff生成了用于编码和解码消息的超高效C++——提示:如果将所有VAR整数或静态大小的条目编码到它中,它将以确定的速度编码和
- 导线尺寸
- 序列化速度
- 反序列化速度
以下是我正在阅读的一些信息。协议缓冲区是为有线电视设计的:
ServiceStack的文本序列化程序最接近于二进制protobuf网络的性能,其速度仅比protobuf网络慢2.58x。小消息大小不会自动转换为快速性能,请参阅本文良好链接;我唯一不确定的是关于Avro的评论——虽然它可以更有效地用于其核心用例(大量类似的数据条目),但在这个基准测试(测试单个请求的处理)中,它的性能似乎不是很快。。。。我更喜欢“SeDes:)但是,它确实有不处理继承的不幸缺点,虽然合成是一种有效的替代方法,但我不喜欢被我的数据传输对象强迫使用合成而不是继承。我相信扩展可以以非常类似于继承的方式使用。。。是的,扩展是一个很好的观点。我每天都在工作实践中使用它。“协议缓冲区是为电线设计的”什么是“电线”?@marcospgp
wire
的意思就是网络。现在,当我们使用如此多的无线网络时,听起来可能很奇怪。一些人认为(我认为这包括一位前protobuf作者)使用更大但更便宜的格式进行序列化,然后使用快速标准压缩器压缩输出,这是一个更好的主意。我认为在问题本身提出某种比较方法之前,不应该重新打开该方法(否则这是为了进行更为固执己见的讨论/过于广泛)也许更多的是关于每种格式的优点和缺点,答案可能包括一个决策树。很棒的帖子-但是如果可能的话,你应该在显示平均值的条形图上标出错误条。为什么测试中不包括JIL?(你知道为什么吗?)这个答案没有关于协议缓冲区的信息。