协议缓冲区与平面缓冲区的比较

5

所以,我目前正在一个项目中工作,其中Protocol Buffers被广泛使用,主要作为在键值数据库中存储复杂对象的一种方式。

如果迁移到Flat Buffers,是否会在性能方面带来显著的好处?

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

2个回答

13

Protocol Buffers(协议缓冲区)在网络数据传输时优化了空间消耗,因此对于存档和存储非常高效。但是,复杂的编码解析代价昂贵,因此计算成本很高,并且C++ API大量使用动态分配。另一方面,Flat Buffers(平面缓冲区)则专注于高效解析和内存表示(例如,在某些情况下提供零拷贝视图)。

取决于您的用例,以上哪些方面更重要。


4
引用自flatbuffer页面:

为什么不使用Protocol Buffers等其他工具?

Protocol Buffers与FlatBuffers相似,主要区别在于FlatBuffers不需要解析/解包步骤到次要表示形式,即可访问数据,通常伴随着每个对象的内存分配。代码量也大了一个数量级。Protocol Buffers既没有可选的文本导入/导出,也没有类似于联合的模式语言特性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接