近日,谷歌“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的支持还在试验阶段。对C3#的支持是要求最多的功能之一,可能在下个版本提供。
读者可以查阅 文档 来了解更多信息。
Cap’n Proto 也是一个值得了解一下的项目,它旨在通过避免编码/解码过程来获得性能收益。
查看英文原文:Google Open-Sources FlatBuffers:Efficient, Cross-Platform, Serialization Library
相关推荐
flatbuffers, 内存高效序列化库 FlatBuffers FlatBuffers 是游戏和其他内存受限应用的高效跨平台序列化库。 它允许你在不先解包/解析它的情况下直接访问序列化数据,同时仍然有很大的向前。到我们的目标页面浏览我们...
FlatBuffers 是一个 Java 的序列化库,用于游戏和其他内存受限的应用。FlatBuffers 可以让你直接访问序列化后的数据,无需解压并进行解析的过程。同时提供很强的向前和向后兼容性。FlatBuffers 支持 C 和 Java 语言...
FlatBuffers是一个开放源代码,跨平台的序列化库,旨在最大程度地提高内存效率。 FlatBuffers最初由Google创建,用于游戏开发和其他对性能有严格要求的应用程序,它具有独特的功能,可让您直接访问序列化数据,而...
Cista 是一个开源的简单C 序列化/反序列化库
微软开源跨平台移动开发实践
跨平台开源GUI库 wxWidgets,官网下载速度慢的可以从这里下载。
GMDB是一个超简单,开源,跨平台的电影库,具有各种功能(搜索,记录,观看,喜欢,导入,学习)
SDL(Simple DirectMedia Layer)是一套开源的跨平台多媒体开发库,使用C语言写成,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级别访问。它提供了绘制图像、播放声音、获取键盘输入等...
本文档记录了60项,包括Web 前端框架 Angular;Java 常用库 Guava;序列化库 FlatBuffers,等等Google的60款开源项目,均可下载。
AGG是一个开源、高效的跨平台2D图形库 这是它的离线文档
node-msgpack, 面向NodeJS的空间高效对象序列化库 node-msgpack 是 NodeJS插件的插件,提供使用 MessagePack插件库序列化和序列化JavaScript对象的API 。 原生 JSON 对象相比,这里插件的性能并不太差,序列化数据所...
本书系统介绍了微软新一代高效、跨平台的应用平台.NET Core 1.0。借助.NET Core,原本只能运行在Windows 上的.NET 应用可以运行在Linux、OS X甚至是UNIX上。结合微软的Apache Cordova 和Xamarin 等工具,可以构建从...
开源跨平台XML解析器-LIBXML2--库-SOLARIS10/SPARC,源代码可从http://xmlsoft.org/downloads.html或资源“开源跨平台XML解析器-LIBXML2--C源代码及VC6工程文件”获取
好东西一定得分享,自己现阶段需要好好学习一下QT。C++设计模式--基于Qt4开源跨平台开发框架 完整清晰版中文PDF。好东西而且分数不贵!解压密码qt。
基于C ++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写 设计原则 跨平台 简单易用 高效 平台平台 CSerialPort已经在以下平台做过测试: DOS(x86_64) Windows(x86_64) Linux(x86_64,...
C++设计模式--基于Qt4开源跨平台开发框架
AGG是一个开源、高效的跨平台2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高(自称超过GDI+) 1.下载AGG库,它的家在http://www.antigrain.com,目前最高版本...
linux-winows-跨平台开源图形库 SDL-1.2, 对开发游戏的人很有帮助,对普通的linux用户 windows用户都有很大的参考价值。