执行者实体序列化:BSON与MessagePack(vs JSON)
||
最近,我找到了MessagePack,它是Google的协议缓冲区和JSON的另一种二进制序列化格式,它的性能也优于两者。
还有MongoDB用于存储数据的BSON序列化格式。
有人可以详细说明BSON与MessagePack的区别和缺点吗?
只是为了完成高性能二进制序列化格式的列表:还有Gob,它们将成为Google的协议缓冲区的后继产品。但是,与所有其他提到的格式相反,这些格式不是语言不可知的,它们依赖于Go \的内置反射,此外还有Gobs库,至少针对Go以外的其他语言。
没有找到相关结果
已邀请:
6 个回复
藐刚
MessagePack具有IDL 它与类型检查API有关,MessagePack支持IDL。 (可以从以下网址获得规范:http://wiki.msgpack.org/display/MSGPACK/Design+of+IDL) 协议缓冲区和节流协议需要IDL(不支持动态类型),并提供更成熟的IDL实现。 MessagePack具有流API(Ruby,Python,Java,C ++等) MessagePack支持流式反序列化器。此功能对于网络通信很有用。这是一个示例(Ruby):
拟蓬
癸痊醒
JSON:
所以时间是:
这样可以节省空间,但是速度更快?没有。 测试版本:
豪抱怒掳
对于大小和性能很重要的受限环境(例如嵌入式),这有两个主要好处。 您可以立即检查要解析的数据是否代表完整的文档,或者是否需要在某个时候(从某个连接或存储中)请求更多数据。由于这很可能是异步操作,因此您可能已经在解析之前发送了新请求。 您的数据可能包含带有不相关信息的整个子文档。通过BSON,您可以通过使用子文档的大小信息跳过该文档,轻松遍历子文档中的下一个对象。另一方面,msgpack包含所谓映射中的元素数量(类似于BSON的子文档)。尽管这无疑是有用的信息,但对解析器没有帮助。您仍然必须解析地图中的每个对象,而不能只是跳过它。根据数据的结构,这可能会对性能产生巨大影响。
泉秘胁
使用neuecc的C#Newtonsoft.Json和MessagePack:
砷竣阿