FlatBuffers 是一个高效的跨平台序列化库,提供了C++、C#、C、Go、Java 等的接口。在Github 上依据 Apache 许可证开源。
这是一个注重性能和资源使用的序列化类库。相较于 Protocol Buffers,其更适用于移动设备,FlatBuffers提供更高的性能以及更低的资源需求。
FlatBuffers 特点
- 无需打包 / 解包即可访问序列化数据 - 它的结构化数据都以二进制形式保存,不需要数据解析过程,数据也可以方便传递。
- 内存效率和速度 - 节省内存,且具有更高的效率。
- 灵活 - 具有出色的前后兼容性,不必随新版本更新所有数据。
- 微小的代码占用 - 生成的代码量很小,很容易集成。
- 强键入 - 错误发生在编译阶段,在编译阶段就可以检查一些 BUG 产生。
-
使用方便 - 生成C++代码允许简洁的访问和构建代码。可以在运行时高效解析架构和生成类似 JSON 的文本表示(比 JSON 解析器具有更快、更高效的内存)。
FlatBuffers/Protocol Buffers/Json 比较
FlatBuffers - Protocol Buffers
- 在使用具体的数据之前,FlatBuffers 不需要解析/解包的过程。
- 使用时,FlatBuffers 的引用比 Protocol Buffer 方便,只需要包含两三个头文件即可。
FlatBuffers - Json
- Json 作为数据交换格式,广泛用于各种动态语言之间(当然也包括静态语言)。
- 优点:易于理解(可读性好),
- 缺点:解析性能较差。而且因为它的动态类型特点,代码需要多写好多类型、数据检查逻辑。