两者都是由Google开发人员开发的序列化库。它们之间有什么重大区别吗?将使用Protocol Buffers编写的代码转换为使用FlatBuffers需要很多工作吗?
我撰写了一份关于几种序列化系统的详细比较,包括Protobufs和FlatBuffers,点击这里查看。
然而,这份比较更侧重于比较三个“零拷贝”序列化系统,并将Protobufs作为参考点。此外,我是Cap'n Proto的作者,也是Protobufs v2的作者(我负责在Google开源Protobufs),所以这份比较可能有偏见。
(2021年更新)注意,Protobufs在2001年左右被引入Google,至今仍然是公司内部的“lingua franca”。FlatBuffers于2014年推出,用于某些项目中,但Protobuf仍然是Google主要的数据交换格式,没有更改的意图。公平地说,如果Google想要更改,他们可能无法实现,因为代码太多了。
flatbuffers
目前被广泛使用,例如在 tensorflow lite 中,我们有 tensorflow protobuf 文件,还有其更小的尺寸的 tensorflow lite flatbuffers,知道他们各自的优缺点会对 SO 上的人有所帮助,他们将能够了解哪种更适合特定用例,并与 Cap'n Proto 进行比较,特别是针对移动设备的 flatbuffers。谢谢! - aspiring1