AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

视频云峰会|“超视频化时代的全景创新” 是什么?

阿里云CloudImagine

阿里云 音视频 视频 视频解码 视频制作

2021最新一线大厂Java高级架构师面试题总结

Java 程序员 架构 面试

连续四年百度Android岗必问面试题!成长路线图

欢喜学安卓

android 程序员 面试 移动开发

《啊哈C语言!》学习笔记(1)

Nydia

分布式磁盘 KV 存储 - Kvrocks

Kvrocks

RocksDB redis cluster Redis 协议 storage KV存储引擎

每天学习10个实用Javascript代码片段(一)

devpoint

JavaScript LocalStorage 7月日更

架构实战营模块一作业

王晓宇

架构实战营

排序——插入排序

若尘

数据结构 排序 排序算法 插入排序

【LeetCode】从前序与中序遍历序列构造二叉树Java题解

Albert

算法 LeetCode 7月日更

动手训练属于自己的无人车,这个超强服务现已开源!

亚马逊云科技 (Amazon Web Services)

为什么你总是买了很多不需要的东西?

石云升

消费者 7月日更

k8s 节点机器重启 CNI IP 未回收

Geek_f24c45

Kubernetes cni

你觉得普通程序员和大神程序员有哪些区别

耳东@Erdong

程序员 7月日更

必看!史上最全云原生全景图解读攻略来啦

尔达Erda

容器 微服务 运维 云原生 技术人

第一模块作业

晨晨

架构实战营

别再往收藏夹怼资源了,收好这个视频创作导航网站就够了。

彭宏豪95

效率 视频 导航网站 视频制作

秋招提前批开始了,一文带你了解,C++ 后台开发知识点及学习路线

奔着腾讯去

学习 程序员 面试 校园招聘 秋招

基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

阿里云大数据AI技术

GrowingIO Design 组件库搭建之Select组件

GrowingIO技术专栏

select 组件实现 virtualList

垃圾回收器的前世今生

中原银行

垃圾回收

疯了吧!这帮人居然用 Go 写“前端”?(一)

尔达Erda

开发者 云原生 大前端 后端 开发

模块2作业

cherrycheek

极光开发者周刊【No.0702】

极光JIGUANG

IPFS挖矿算力排行榜?IPFS挖矿排行榜?

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

Java 面试

辩证|北鲲云和你一起探讨关于生命科学发展的意义

北鲲云

架构实战营 模块一作业

面向对象的猫

「架构实战营」

架构实战营模块1课后作业

蔸蔸

来一份全面的面试宝典练练手,看这篇足矣了!

欢喜学安卓

android 程序员 面试 移动开发

5分钟速读之Rust权威指南(三十五)状态模式

wzx

rust

以太坊的 ChainId 与 NetworkId

杰哥的技术杂货铺

区块链 以太坊 ChainId NetworkId

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