【问题标题】:What's the difference between Protocol Buffers and Flatbuffers?协议缓冲区和平面缓冲区有什么区别?
【发布时间】:2014-10-10 23:13:38
【问题描述】:

两者都是序列化库,由 Google 开发人员开发。它们之间有什么大的区别吗?将使用Protocol Buffers的代码转换为使用FlatBuffers的工作量大吗?

【问题讨论】:

    标签: protocol-buffers flatbuffers


    【解决方案1】:

    我在这里写了一些序列化系统的详细比较,包括 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 可能无法更改这一点,代码太多了。

    【讨论】:

    • 它可能不会被广泛采用,但基准看起来相当不错。开源游戏库 cocos2d-x 现已成功使用。我认为 Flatbuffer 已经通过了实验阶段
    • @KentonVarda,自 2014 年 6 月以来与 FlatBuffers 进行比较的任何新更新?
    • 根据this article,Facebook 在其 Android 应用程序中使用平面缓冲区。
    • @KentonVarda:嗨,Kenton,如果你能提供这个答案的更新,我会非常高兴,因为flatbuffers 这些天被大量使用,例如在 tensorflow lite,我们有 tensorflow protobuf 文件,还有尺寸较小的 tensorflow lite flatbuffers,这将有助于了解这里的优缺点,以便能够理解,哪个更适合特定用例,也也与 Cap'n Proto 进行比较,尤其是针对移动设备的 flatbuffers,谢谢!
    • @HugoGresse 我删除了您的编辑并进行了不同的编辑,以删除 FlatBuffers 是“实验性”并在某些项目中使用的断言,但澄清 Protobuf 仍然是 Google 内部的通用语。如果有人想对此问题提交更好的答案,欢迎他们这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2010-12-15
    • 1970-01-01
    • 2021-12-19
    • 2011-11-15
    相关资源
    最近更新 更多