协议缓冲区与扁平缓冲区

Mat*_*tti 4 c++ protocol-buffers flatbuffers

所以,我目前正在开发一个广泛使用Protocol Buffers的项目,主要是作为一种在键值数据库中存储复杂对象的方法.

迁移到Flat Buffers是否会在性能方面提供相当大的好处?

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

Ker*_* SB 11

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

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