【发布时间】:2014-10-10 23:13:38
【问题描述】:
两者都是序列化库,由 Google 开发人员开发。它们之间有什么大的区别吗?将使用Protocol Buffers的代码转换为使用FlatBuffers的工作量大吗?
【问题讨论】:
标签: protocol-buffers flatbuffers
两者都是序列化库,由 Google 开发人员开发。它们之间有什么大的区别吗?将使用Protocol Buffers的代码转换为使用FlatBuffers的工作量大吗?
【问题讨论】:
标签: protocol-buffers flatbuffers
我在这里写了一些序列化系统的详细比较,包括 Protobufs 和 FlatBuffers:
https://kentonv.github.io/capnproto/news/2014-06-17-capnproto-flatbuffers-sbe.html
但是,比较更侧重于比较三个新的“零拷贝”序列化系统,并且主要包括 Protobufs 作为参考点。另外,我是 Cap'n Proto 的作者,也是 Protobufs v2 的作者(我在 Google 负责开源 Protobufs),所以比较可能会有偏差。
(2021 年更新:)请注意,Google 早在 2001 年左右就引入了 Protobufs,并且今天仍然是那里的“通用语”。 FlatBuffers 于 2014 年推出并在一些项目中使用,但 Protobuf 仍然是 Google 的主要数据交换格式,并且无意改变它。公平地说,如果他们愿意,Google 可能无法更改这一点,代码太多了。
【讨论】:
flatbuffers 这些天被大量使用,例如在 tensorflow lite,我们有 tensorflow protobuf 文件,还有尺寸较小的 tensorflow lite flatbuffers,这将有助于了解这里的优缺点,以便能够理解,哪个更适合特定用例,也也与 Cap'n Proto 进行比较,尤其是针对移动设备的 flatbuffers,谢谢!