报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

谷歌开源高效、跨平台的序列化库 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:527722
用户头像

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

关注

评论

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

3月9日(本周六)TiDB 社区活动在深圳!一起聊聊 TiDB 在零售、互联网+、Saas、游戏、出海企业的分布式数据库选型、升级降本之路、7.5 新版本的探索!线下参会有机会获得多款社区新周边哦~

TiDB 社区干货传送门

社区活动

Shell 检查程序进程是否存在,自动重启

最爱小胖子

如何将应用一键部署至多个环境?丨Walrus教程

SEAL安全

MySQL 运维 应用部署 Walrus

国家科技传播中心讲坛!播出预告:吴甜——当机器学会思考

飞桨PaddlePaddle

人工智能 深度学习 百度 BAIDU 百度飞桨

大咖公开课 | 探索AI的边界:如何精准地测试人工智能

霍格沃兹测试开发学社

理解BS期权定价

数新网络官方账号

Python 期权 金融

TiKV 组件内 GC(物理空间回收)原理及常见问题

TiDB 社区干货传送门

监控 性能调优 集群管理 故障排查/诊断 TiKV 底层架构

LLM 大模型框架 LangChain 可观测性最佳实践

心有千千结

观测云 LLM langchain

软件测试团队管理技巧 | 提升团队效能:如何与下属进行有效沟通

测试人

软件测试

管理技巧 | 提升团队效能:如何与下属进行有效沟通

测吧(北京)科技有限公司

测试

深入浅出:JavaScript 中 every() 的运作原理

Apifox

JavaScript 程序员 前端 数组 前端开发

TiDB Binlog功能使用实践

TiDB 社区干货传送门

6.x 实践

云服务和本地部署大对比,应该选择哪种方式?

Finovy Cloud

云计算 云服务器 云部署搭建

提升团队效能:如何与下属进行有效沟通

霍格沃兹测试开发学社

7.1 版本 DRAutoSync 非计划内切换小记

TiDB 社区干货传送门

集群管理 数据库架构设计 7.x 实践

深度解析:小红书笔记详情API的背后逻辑

技术冰糖葫芦

API 接口

探索AI的边界:如何精准地测试人工智能

测试人

软件测试

✅日活3kw的实际库存业务场景中的超卖到底怎么解决的

派大星

电商超卖 互联网+ 秒杀系统架构

一文读懂私网解析 PrivateZone

火山引擎边缘云

DNS DNS服务器 DNS劫持 #DNS

一键Run带你体验扩散模型的魅力

华为云开发者联盟

人工智能 华为云 华为云ModelArts 华为云开发者联盟

探索AI的边界:如何精准地测试人工智能

测吧(北京)科技有限公司

测试

春天已至,见证80/90/00后女性开发者的云上生长力量

华为云开发者联盟

人工智能 华为云 科技 华为云开发者联盟 先锋开发者云上说

印度股票交易系统搭建GangGuHK

GangguHK

基于 TiCDC 创建灾备和容灾切换

TiDB 社区干货传送门

管理与运维 新版本/特性解读 数据库架构设计 6.x 实践 7.x 实践

【我和 TiDB 社区的故事】我与 TiDB 专栏的故事

TiDB 社区干货传送门

人物访谈

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