HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

谷歌开源高效、跨平台的序列化库 FlatBuffers

  • 2014-06-23
  • 本文字数:727 字

    阅读完需:约 2 分钟

近日,谷歌“Fun Propulsion Labs”团队开源了FlatBuffers 。该库的构建是专门为游戏开发人员的性能需求提供支持,它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输,而不需要任何解析开销。

FlatBuffers 有如下一些关键特性——

  • 访问序列化数据不需要打包 / 拆包
  • 节省内存而且访问速度快——缓存只占用访问数据所需要的内存;不需要任何额外的内存。
  • 灵活性——通过可选字段向前向后兼容
  • 代码规模小
  • 强类型——错误在编译时捕获,而不是在运行时
  • 便利性——生成的 C++ 头文件代码简洁。如果需要,有一项可选功能可以用来在运行时高效解析 Schema 和 JSON-like 格式的文本。
  • 跨平台——使用 C++ 编写,不依赖 STL 之外的库,因此可以用于任何有 C++ 编辑器的平台。当前,该项目包含构建方法和在 Android、Linux、Windows 和 OSX 等操作系统上使用该库的示例。

与 Protocol Buffers 或 JSON Parsing 这样的可选方案相比,FlatBuffers 的优势在于开销更小,这主要是由于它没有解析过程。

在 C++ 中使用 FlatBuffers 包含以下步骤——

  • 使用专用的 DSL 创建 schema 文件
  • 使用 schema 编译器生成 C++ 头文件
  • 在用户程序中包含生成的头文件(而且需要在路径中包含 flatbuffers/flatbuffers.h 文件)
  • 使用 FlatBufferBuilder 类(它会构造一个平面二进制缓冲区)读写数据

正如前期讨论组中的讨论,FlatBuffers 明显有些不完善的地方。对Java 的支持还在试验阶段。对C#的支持是要求最多的功能之一,可能在下个版本提供。

读者可以查阅文档来了解更多信息。

Cap’n Proto 也是一个值得了解一下的项目,它旨在通过避免编码 / 解码过程来获得性能收益。

查看英文原文:**** Google Open-Sources FlatBuffers:Efficient, Cross-Platform, Serialization Library

2014-06-23 23:527544
用户头像

发布了 256 篇内容, 共 85.6 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

看完这篇操作系统,和面试官扯皮就没问题了

苹果看辽宁体育

操作系统 计算机基础

程序员的晚餐 | 5 月 13 日 果木鸡丁的夏天

清远

美食

程序员的晚餐 | 5 月 11 日 久违的大蒜的味道

清远

美食

低代码 .VS. 无代码

Jeff Kit

低代码 零代码

Java并发之AQS源码分析

指尖流逝

Java

基于环信sdk在uni-app中快速开发多平台社交Demo

DT极客

程序员的晚餐 | 5 月 10 日 能让你流泪的不只是洋葱

清远

美食

数据与广告系列一:初识在线计算广告

黄崇远@数据虫巢

互联网 数据 广告

Linux 容器化技术的前世今生(虚拟化、容器化、Docker)

Meandni

Docker 云计算 Linux 容器 虚拟机

严选合伙人(一)

Neco.W

创业 合伙人 初创公司

我肝了一个月,给你写出了这本Java开发手册。

苹果看辽宁体育

Java25周年

回“疫”录(16):管控更加严格了

小天同学

疫情 回忆录 现实纪录 纪实

如何认识更多的朋友扩展社交朋友圈的质量

吃素的左撇子

人生 人脉

ClickHouse为何如此之快?

nauu

数据库 大数据 OLAP Clickhouse

如何优雅的实现分布式锁

飘渺Jam

redis zookeeper 分布式锁

产品不需要刻意强调创新

Xue Liang

产品 创新突破 PCon

记一次线上事故

编号94530

Java MySQL 故障分析 事故

Web3极客日报 #139

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

JVM源码分析之深入分析Object类finalize()方法的实现原理

猿灯塔

JVM

游戏夜读 | 预测问题的硬核是?

game1night

手把手带你体验 HTTP/3

清远

这种场景你还写ifelse你跟孩子坐一桌去吧

小傅哥

小傅哥 drools ifelse 复杂代码优化 规则引擎使用

Java 真实笔试题2

旭霁

Java

Java 中的 Mysql 时区问题

张晓辉

Tomcat安全配置

wong

Tomccat security

程序员的晚餐 | 5 月 14 日 虎皮青椒

清远

美食

个人技术成长与发展

颇风

后端 技术人

Web3 极客日报#138

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

现在的我和未来的我之间的差距原来是态度,而它拉开我们彼此命运的距离。

叶小鍵

一杯茶的时间,上手 Node.js

图雀社区

node.js

练习英语口语的误区

董一凡

学习

谷歌开源高效、跨平台的序列化库FlatBuffers_Java_Roopesh Shenoy_InfoQ精选文章