作者:123 | 来源:互联网 | 2023-01-05 11:08
请帮助建议Flatbuffers和CBOR协议的优缺点。这两种二进制格式都声称在它们的网站上是不错的,但是我无法在两者之间做出一些很好的区别。
平面缓冲区:
优点:
严格输入FlatBuffer,Cap'n proto和其他类似解决方案被视为提高性能的关键点,因为不需要额外的编码/解码。
数据模型允许使用紧凑的数据结构和快速访问轻松地对类型化的对象进行偏移
FlatBuffers不需要解析/拆包步骤即可生成辅助表示形式,然后您才能访问经常与按对象存储分配相关的数据。
坏处:
像CBOR一样新的和不标准化的
CBOR
优点:
可以完全在流中创建和处理而无需额外的内存
不必预先定义任何模式,因为我们的数据是动态的且可变的
这是IETF的一项开放国际标准,因此比专有标准更好。
它设计用于低内存,非转换,基于流的处理,同时还提供其他数据类型的扩展
坏处:
CBOR表示它遵循JSON模型(因此不是严格类型的对象)
它以相同类型的对象(字符串,整数,映射等)开头。
PS:
与平缓缓冲区相比,感觉CBOR中的类型管理将在性能上付出高昂的代价,但是由于CBOR是标准化协议,因此如果这种差异不大,我倾向于使用它。请让我知道你们都推荐两个,为什么。
1> Aardappel..:
我认为您已经很清楚地自己阐明了。FlatBuffer的优势在于无需解析/拆包/分配即可访问数据,这在某些情况下会带来严重的性能优势。但是,如果这对您而言无关紧要,例如协议缓冲区也可以正常工作。
数据中的强类型和动态类型也很重要。如果我想事先没有约束的通用数据存储,则只使用后者。
顺便说一句,如果出于某种原因您更喜欢动态类型,但又希望就地访问具有性能优势,那么实际上存在一种将两者结合的格式:https : //google.github.io/flatbuffers/flexbuffers。 html
FlatBuffers不是“专有的”。它可能是由Google设计的,但是它是开源的,并被许多其他公司所依赖。