【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

ElasticSearch 高级检索,按照顺序进行搜索

alexgaoyh

elasticsearch dsl 顺序搜索 高级检索 与或关系

某程序员哀叹:写几年代码,回头一看80%都没用,没法写上简历!

Java你猿哥

Java 程序员 面试 简历

关于自托管环境,您了解多少?

龙智—DevSecOps解决方案

Atlassian Data Center

华为云智能编程助手助力哈尔滨工业大学(深圳)学子,引领软件研发新趋势

爱尚科技

600+ 道 Java面试题及答案整理(建议收藏)

会踢球的程序源

Java 面试 java面试 应届生 Java八股文

华为云智能编程助手助力哈尔滨工业大学(深圳)培养新时代软件研发人才

爱尚科技

阿里高工纯手写的《分布式架构手册》仅仅一天GitHub就标星128K

Java你猿哥

架构 分布式 分布式架构

Linux 修改系统时间的两种方式

会踢球的程序源

Java Linux

实战分享丨 MySQL 与 Django 版本匹配相关经验

Java你猿哥

Java MySQL SSM框架 实战 Diango

ReentrantLock和Synchronized使用与区别,多线程安全问题

共饮一杯无

synchronized ReentrantLock 三周年连更

研究思考丨关于软件复杂度的困局

阿里巴巴云原生

阿里云 云原生 复杂度

大咖力荐 |《中国企业软件研发管理白皮书》为什么值得看?

万事ONES

PostgreSQL技术内幕(七)索引扫描

酷克数据HashData

数据库 postgresql

爆肝一月!527页文档详解SpringCloud微服务和分布式系统实践

Java你猿哥

数据库 分布式 SSM框架 微服务设计

SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant

IT科技苏辞

OneCode 开源集成开发工具ESD功能介绍

codebee

开源 低代码平台

技术分享 | 如何迅速将分布式政企应用转型为云原生微服务架构

IT科技苏辞

【Linux】系统中安装Go环境

A-刘晨阳

Go Linux 三周年连更

云服务是什么意思?有什么用?

行云管家

云计算 云服务

华为云智能编程助手赋能高校,揭示行业发展新动向

爱尚科技

【经验分享】硬件工程师需要知道的DFM可制造性设计

华秋PCB

工具 电路 PCB PCB设计 可制造性

缓存一致性设计思路

我爱娃哈哈😍

redis 缓存 缓存一致性

分布式文件系统FastDFS

会踢球的程序源

Java fastdfs 分布系统

解决流水线瓶颈、提升编码效率的五个方法(上篇)

龙智—DevSecOps解决方案

ci cicd 持续集成 流水线

互联网工程师Java面试八股文及答案整理(2023最新版)

Java你猿哥

Spring Cloud springboot java面试 面经 JVM面试

分布式政企应用如何快速实现云原生的微服务架构改造

IT科技苏辞

解析单存储库:定义、优势与挑战

龙智—DevSecOps解决方案

谷歌 Monorepo Monolith 单储存库

打造安全无忧软件应用的十大最佳实践

龙智—DevSecOps解决方案

软件开发 软件开发安全

涅槃重生!字节大牛力荐大型分布式手册,凤凰架构让你浴火成神

Java你猿哥

架构 分布式架构 凤凰架构

运维审计录像的作用是什么?用什么软件好?

行云管家

堡垒机 运维审计 审计录像

第二届“鼎新杯”数字化转型应用大赛申报通道正式开启

信通院IOMM数字化转型团队

数字化转型 鼎新杯

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