写点什么

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

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

关注

评论

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

音视频学习--X264码率控制起航

Fenngton

音视频 视频编解码 签约计划第二季

「2021年11月复盘」买了个小太阳很暖和

宋天伦

复盘

RocketMQ存储设计到底强在哪?

慕枫技术笔记

架构 后端 28天写作 12月日更

Java面向对象精讲【上】

XiaoLin_Java

面向对象 java基础 12月日更

程序员写作模版献给懵逼的你

jerry

JVM 性能诊断工具

Ayue、

JVM 技术专题合集

一次redis节点宕机引发的后续操作--部署哨兵集群

为自己带盐

redis redis哨兵模式 28天写作 签约计划第二季 12月日更

音视频学习--VLC优化

Fenngton

音视频 RTSP 签约计划第二季

架构训练营 Week1 学习总结

红莲疾风

「架构实战营」

JVM类加载机制

Ayue、

JVM 技术专题合集

音视频学习合集

Fenngton

内容合集 签约计划第二季

全方位认识 JVM

Ayue、

内容合集 技术专题合集

眼耳鼻舌身意,严肃地聊一聊元宇宙的“技术拼图”

脑极体

日志归一管理的一种解决方案

为自己带盐

redis elasticsearch 28天写作 签约计划第二季 12月日更

Arthas阿里开源的Java诊断工具

Ayue、

JVM 技术专题合集

JVM性能调优之内存优化与GC优化实战

Ayue、

JVM jvm调优 技术专题合集

flutter如何从TextWidget复制文本【Flutter专题17】

坚果

flutter 28天写作 12月日更

架构训练营 -- 模块一

LJK

架构训练营

了解 JVM 的方法调用

Ayue、

JVM 技术专题合集

乔布斯家app下架上架杂记

张老蔫

28天写作

音视频学习--新codec适配和兼容

Fenngton

音视频 视频编解码 签约计划第二季

音视频学习--日常开发踩坑系列(1)

Fenngton

音视频 传输协议 签约计划第二季

自动驾驶车辆控制 最终项目作业 实现分析 易筋 ARTS 打卡 Week 78

John(易筋)

ARTS 打卡计划

JVM分代回收机制和垃圾回收算法

Ayue、

JVM 技术专题合集

纯css实现117个Loading效果(中)

德育处主任

CSS css3 大前端 纯CSS

react源码解析14.手写hooks

buchila11

React React Hooks

23种设计模式第一种——单例模式

李子捌

28天写作 12月日更

纯css实现117个Loading效果(上)

德育处主任

CSS 大前端 纯CSS 特效

音视频学习--SRTP优化

Fenngton

音视频 传输协议 签约计划第二季

【LeetCode】赎金信Java题解

Albert

算法 LeetCode 12月日更

给弟弟的信第2封|关于时间管理这件事

大菠萝

28天写作

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