请帮助建议FlatbuffersCBOR协议(protocol)的优缺点。这两种二进制格式在其网站上都声称是不错的,但是我无法在两者之间做出一些很好的区别。

FlatBuffers :

优势:

  • 严格输入FlatBuffer,Cap’n proto和其他类似解决方案被视为性能的主要关键点,因为不需要其他编码/解码。
  • 数据模型允许使用紧凑的数据结构和快速访问的
  • 对类型化的对象进行简单的偏移
  • FlatBuffers不需要解析/解压缩步骤即可生成辅助表示形式,然后您才能访问经常与按对象存储分配相关的数据。

  • 坏处:
  • 是新的,并且不像CBOR一样标准化。

  • 银行同业拆借利率

    优势:
  • 可以完全在流中创建和处理而无需额外的内存
  • 不必预先定义任何模式,因为我们的数据是动态的并且是
  • 的变体
  • 这是IETF的一项开放国际标准,因此比专有标准更好。
  • 专为低内存,非转换,基于流的处理而设计,同时还提供了其他数据类型
  • 的扩展

    坏处:
  • CBOR表示它遵循JSON模型(所以不是严格类型的对象)
  • 它以相同类型的对象(字符串,整数,映射等)开头。

  • PS:
    感觉到与平缓缓冲区相比,CBOR中的类型管理将在性能上付出高昂的代价,但是由于CBOR是标准化协议(protocol),如果这种差异不大,我倾向于选择它。请让我知道你们都推荐两个,为什么。

    最佳答案

    我认为您自己已经很清楚地阐明了这一点。 FlatBuffer的优势在于能够在不进行分析/拆包/分配的情况下访问数据,这在某些情况下会带来严重的性能优势。但是,如果这对您而言并不重要,例如 Protocol Buffer 可能也可以正常工作。

    数据中的强类型和动态类型也很重要。如果我想要没有约束的通用数据存储,则只使用后者。

    顺便说一句,如果由于某种原因您更喜欢动态类型,但又希望就地访问具有性能优势,那么实际上存在一种将两者结合的格式:https://google.github.io/flatbuffers/flexbuffers.html

    FlatBuffers不是“专有的”。它可能是由Google设计的,但它是开源的,并被许多其他公司所依赖。

    09-10 00:02