协议缓冲区与扁平缓冲区

时间:2017-03-27 19:24:06

标签: c++ protocol-buffers flatbuffers

因此,我目前正在开展一个广泛使用Protocol Buffers的项目,主要是将一些复杂对象存储在键值数据库中。

迁移到Flat Buffers会在性能方面带来相当大的好处吗?

更一般地说,是否有充分的理由使用Protocol Buffers而不是Flat Buffers?

2 个答案:

答案 0 :(得分:9)

协议缓冲区针对线路上的空间消耗进行了优化,因此对于归档和存储,它们非常有效。但是,复杂的编码解析起来很昂贵,因此计算成本很高,并且C ++ API大量使用动态分配。另一方面,平缓冲区针对有效的解析和内存表示进行了优化(例如,在某些情况下提供数据的零拷贝视图)。

这取决于您的用例,哪些方面对您来说更重要。

答案 1 :(得分:3)

flatbuffer页面引用:

  

为什么不使用Protocol Buffers,或者??

     

协议缓冲区确实与FlatBuffers相似,具有   主要区别在于 FlatBuffers不需要解析/   在您可以访问之前将步骤解压缩到辅助表示   数据,通常与每个对象的内存分配相结合。代码是一个   数量级也更大。协议缓冲区既没有可选项   文本导入/导出或模式语言功能,如联合。