请帮助提出Flatbuffers和CBOR协议的一些优点和缺点。这两种二进制格式在他们的网站上都声称很好,但我无法在两者之间做出一些很好的区别。
平面缓冲区:
优势:
- FlatBuffer、Cap'n proto 和其他类似解决方案中的严格输入被视为性能的主要关键点,因为不需要额外的编码/解码。
- 数据模型允许使用紧凑的数据结构和快速访问的类型对象的简单偏移
- FlatBuffers 不需要对辅助表示进行解析/解包步骤,然后您就可以访问通常与每个对象内存分配相结合的数据。
坏处:
- 新的,不像 CBOR 那样标准化。
CBOR
优势:
- 可以完全在流中创建和处理,无需额外内存
- 不必预先定义任何模式,因为我们的数据是动态的和多变的
- 它是来自 IETF 的开放国际标准,使其成为比专有标准更好的选择。
- 它专为低内存、非转换、基于流的处理而设计,同时还为其他数据类型提供扩展
坏处:
- CBOR 说它遵循 JSON 模型(所以不是严格类型的对象)
- 它以相同类型的对象(字符串、整数、映射等)开始。
PS:
感觉在 CBOR 中管理类型与 flatbuffers 相比性能成本很高,但由于 CBOR 是标准化协议,如果这种差异不是很大,我倾向于更喜欢它。请让我知道你们都推荐哪两个以及为什么。