因此,我目前正在开发一个项目,其中Protocol Buffers被广泛使用,主要用于将复杂对象存储在键值数据库中。协议缓冲区vs平坦缓冲区
迁移到Flat Buffers会在性能方面提供相当大的好处吗?
更一般地说,有没有一个很好的理由使用Protocol Buffers而不是Flat Buffers?
因此,我目前正在开发一个项目,其中Protocol Buffers被广泛使用,主要用于将复杂对象存储在键值数据库中。协议缓冲区vs平坦缓冲区
迁移到Flat Buffers会在性能方面提供相当大的好处吗?
更一般地说,有没有一个很好的理由使用Protocol Buffers而不是Flat Buffers?
协议缓冲区针对线路上的空间消耗进行了优化,因此对于存档和存储而言,它们非常高效。但是,复杂的编码代价很高,因此它们的计算量很大,并且C++ API大量使用动态分配。另一方面,扁平缓冲器针对高效解析和内存中表示进行了优化(例如,在某些情况下提供数据的零拷贝视图)。
这取决于你的用例,哪些方面对你更重要。
从flatbuffer页面引用:
为什么不使用协议缓冲区,或..?
协议缓冲器确实比较类似FlatBuffers,与 主要差别在于FlatBuffers不需要解析/ 拆包步骤到次级表示,然后才能访问 数据,常常与每个对象的存储器分配。该代码也是一个 数量级更大。协议缓冲区既没有可选的 文本导入/导出,也没有联盟等模式语言功能。