不情愿地选择 CBOR 而不是 MessagePack

作者在追求可共享编程语言时,需要一种合适的序列化格式,既要高效传输/存储,又要易于理解/实现。序列化后的 scrap 脚本表达式称为“flat scraps”,之前曾用 MessagePack 序列化,后来发现 Max Bernstein 已写了一个约 100 行的序列化器。经过进一步实验,认为序列化格式还需符合现有标准、充当伪 IR 等。同时,Peter Saxton 推荐 CBOR 作为 MessagePack 的替代方案。

在“哪种更酷”方面,MessagePack 被认为是“酷小孩”会用的,其宣传语为“像 JSON,但更快更小”,而 CBOR 被认为不酷,是由委员会设计,有很多 RFC 相关内容。

在“哪种更高效”方面,在一些基准测试中,CBOR 库编码/解码速度比 MessagePack 快约 200%。

在“哪种更简单”方面,通常选择概念简单而非性能,通过文档长度衡量复杂性,MessagePack 文档只是一个 markdown 文件,CBOR 规范有其自身特点,虽最初文档 sniff-test 有误导,但实际上 CBOR 的标签模式更易解释和实现,不过也有人认为 CBOR 的标签设计不佳。

在“哪种更流行”方面,根据数据,MessagePack 在多种语言的实现中更受欢迎,如 C 语言的 msgpack/msgpack-c 有 3.1K☆等,CBOR 相对较少。

对于作者的特定用例,CBOR 更优,Scrapscript 表达式在 CBOR 的扩展标签中感觉很好,但作者不喜欢自己偏好 CBOR,不过认为 MessagePack 和 CBOR 都比 JSON 有很大改进,只要 MessagePack 保持流行优势,两者都是合理的选择,且协议很重要,要谨慎交流。

阅读 9
0 条评论