首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏向治洪

    Android FlatBuffers实战

    FlatBuffers简介 FlatBuffers是Google开源的一个跨平台的、高效的、提供了C++/Java接口的序列化工具库,它是Google专门为游戏开发或其他性能敏感的应用程序需求而创建。 ; FlatBuffers优势 相比传统的JSON和Protocol Buffers等序列化工具,FlatBuffers具有如下的一些优点: 不需要解析/拆包就可以访问序列化数据:FlatBuffers FlatBuffers实战 FlatBuffers运作流程 首先来看一下FlatBuffers项目为开发者提供了哪些内容,可以从官网下载源码,其目录结构如下图: 如果要将FlatBuffers 并且FlatBuffers期间Android App中没有GC,而在使用JSON时发生了很多次GC,测试的源码可以通过以下地址下载:FlatBuffers耗时测试 参考:在Android中使用FlatBuffers FlatBuffers官方doc

    1.1K10编辑于 2022-11-30
  • 来自专栏冰霜之地

    深入浅出 FlatBuffers 之 Encode

    FlatBuffers 生成二进制流 FlatBuffers 的使用和 Protocol buffers 基本类似。只不过功能比 Protocol buffers 多了一个解析 JSON 的功能。 FlatBuffers 读取二进制流 ? 上一章讲到了如何利用 FlatBuffers 把数据转为二进制流,这一节讲讲如何读取。 (builder *flatbuffers.Builder, name flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT (9, flatbuffers.UOffsetT(equipped), 0) } func MonsterAddPath(builder *flatbuffers.Builder, path flatbuffers.UOffsetT FlatBuffers 优缺点 ?

    7.8K74发布于 2018-08-30
  • 来自专栏johnhuster

    深入浅出FlatBuffers原理

    高德地图数据编译增量发布使用了FlatBuffers序列化工具,借此契机对FlatBuffers原理进行研究并分享于此。 本文简单介绍 FlatBuffers Scheme,通过剖析 FlatBuffers 序列化与反序列化原理,重点回答以下问题: 问题1:FlatBuffers 如何做到反序列化速度极快的(或者说无需解码 问题2:FlatBuffers 如何做到默认值不占存储空间的(Table 结构内的变量)。 问题3:FlatBuffers 如何做到字节对齐的。 问题6:FlatBuffers 如何根据 Scheme 自动生成编解码器。 问题7:FlatBuffers 如何根据 Scheme 自动生成 Json。 四 FlatBuffers 的反序列化 FlatBuffers 反序列化的过程就很简单了。

    2.4K30编辑于 2023-02-02
  • 来自专栏让技术和时代并行

    使用 FlatBuffers 提高反序列化性能

    ,根据官网介绍https://google.github.io/flatbuffers/,FlatBuffers是一个高效的、跨平台的序列化组件,保证数据向前向后兼容性,支持多种编程语言,是专门为游戏开发和其他性能关键的应用而开发的 FlatBuffers 对序列化基本使用原则: 小端模式。 并且 FlatBuffers 可以读取任意字段,而不是像 Json 和 Protobuf 需要读取整个对象以后才能获取某个字段。FlatBuffers 的主要优势就在反序列化这里了。 所以 FlatBuffers 可以做到解码速度极快,或者说无需解码直接读取。 总结 FlatBuffers 和 Protobuf 一样具有数据不可读性,必须进行数据解析后才能可视化数据。 但是相比其它的序列化工具,FlatBuffers 最大的优势是反序列化速度极快,或者说无需解码。如果使用场景是需要经常解码序列化的数据,则有可能从 FlatBuffers 的特性中获得巨大收益。

    1.9K10编辑于 2023-03-18
  • 来自专栏冰霜之地

    深入浅出 FlatBuffers 之 Schema

    FlatBuffers 是什么? 此外,对于 table 对象,FlatBuffers 提供前向/后向兼容性和 optional 字段,以支持大多数格式的演变。 FlatBuffers 的主要目标是避免反序列化。 FlatBuffers 与 Protocol Buffers 确实比较相似,主要的区别在于 FlatBuffers 在访问数据之前不需要解析/解包。两者代码也是一个数量级的。 FlatBuffers 使用量 说了这么多,读者会疑问,FlatBuffers 使用的人多么?Google 官方页面上提了 3 个著名的 app 和 1 个框架在使用它。 具体做法请参照 flatc 文档和 C++ 对应的 FlatBuffers 文档,查看如何在运行时解析 JSON 成 FlatBuffers

    4.8K20发布于 2018-08-30
  • 来自专栏golang从入门到进阶

    JSON vs Protocol Buffers vs FlatBuffers:谁才是高性能序列化的“卷王”?

    性能实测:Go基准测试结果作者搭建了一个简单的事件上报API,分别用JSON、Protobuf、FlatBuffers实现,然后跑Gobenchmark:格式每次操作耗时(ns/op)内存分配(B/op )分配次数(allocs/op)JSON1732228826Protobuf697195221FlatBuffers640185621结论:FlatBuffers比JSON快2.7倍! 场景推荐方案内部API、低频调用、快速开发✅JSON(简单、直观、调试方便)高性能RPC、gRPC生态✅Protobuf(生态成熟,工具链完善)极致性能、高频事件、低延迟要求(如游戏、IoT、审计日志)✅✅FlatBuffers 如果你的服务每天只有1000个请求,用FlatBuffers可能反而增加维护成本。但如果你每天处理10亿事件,那省下的服务器费用可能够你买辆特斯拉了。小贴士:如何开始? Protobufprotoc--go_out=.event.proto#FlatBuffersflatc--goevent.fbs集成到HTTPhandler结语JSON是“舒适区”,Protobuf是“性能升级包”,而FlatBuffers

    23810编辑于 2026-01-31
  • 来自专栏owent

    protobuf、flatbuffer、msgpack 针对小数据包的简单对比

    回到协议上打解包上,本来我是想用 flatbuffers ,原因也很简单。 但是后来我跑测试的时候看到的结果 flatbuffers 打出的包体太大了,并不理想。所以就简单地测试了一下 msgpack 、 flatbuffers 和 protobuf 效果。 flatbuffers 官方也是说假设你不删除字段,只会把字段设为 desperated ,而且字段ID必须从0开始,然后递增。这个是和 flatbuffers 的打包数据组织结构相关的。 flatbuffers 打包后操作的都是指向数据块内部的地址。 msgpack 的解包后内存占用我没有统计,但是内部结构其实和 flatbuffers 是差不多的,比 flatbuffers 少了vtable 但是多了几个指针,估计内存占用也差不多吧。

    9.7K20发布于 2020-01-02
  • 来自专栏运维开发王义杰

    Go:如何处理模块校验错误,以checksum mismatch为例

    问题描述 在 Go 开发中,使用 go mod tidy 或 go get 等命令下载依赖时,有时会遇到如下错误: plaintext go: downloading github.com/google/flatbuffers v1.12.0 verifying github.com/google/flatbuffers@v1.12.0: checksum mismatch downloaded: h1:N8EguYFm2wwdpoNcpchQY0tPs85vOJkboFb2dPxmixo go.sum 文件中的每一行包含一个模块的校验信息,格式如下: plaintext <module> <version> <hash> 例如: plaintext github.com/google/flatbuffers v1.12.0 h1:N8EguYFm2wwdpoNcpchQY0tPs85vOJkboFb2dPxmixo= github.com/google/flatbuffers v1.12.0/go.mod h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= 其中: github.com/google/flatbuffers 是模块路径。

    2.3K10编辑于 2024-05-29
  • 来自专栏卓越笔记

    ERROR: Could not build wheels for opencv-python-headless, which is required to install pyproject.tom

    b21be85a824309351356c9a229cf9614d521620e26202a36d5fff2353c37/protobuf-3.19.6-cp36-cp36m-win_amd64.whl (897 kB) Collecting flatbuffers pypi.tuna.tsinghua.edu.cn/packages/90/49/3154215b3d8a7acd8c07908eb7132399232fe6a5a79137c4924e712b8eca/flatbuffers -23.1.21-py2.py3-none-any.whl (26 kB) Installing collected packages: protobuf, flatbuffers, onnxruntime , ddddocr Successfully installed ddddocr-1.4.7 flatbuffers-23.1.21 onnxruntime-1.10.0 protobuf-3.19.6

    3.5K20编辑于 2023-02-22
  • 来自专栏青年夏日

    Android TensorFlow Lite 深度学习识别手写数字mnist demo

    tflite 存储格式是 flatbuffersFlatBuffers 是由Google开源的一个免费软件库,用于实现序列化格式。 因此,如果要给移动端使用的话,必须把 TensorFlow 训练好的 protobuf 模型文件转换成 FlatBuffers 格式。官方提供了 toco 来实现模型格式的转换。 三.

    1.6K00发布于 2021-04-11
  • 来自专栏AI SPPECH

    MCP 的性能瓶颈与优化:从理论分析到工业级实践

    2.3 新要素 3:零拷贝序列化技术 实现了基于 FlatBuffers 的零拷贝序列化方案,相比传统 JSON 序列化,将序列化/反序列化开销降低了 80% 以上,显著提升了 MCP 系统的吞吐量。 的 MCP 序列化实现 import flatbuffers from mcp.flatbuffers import ToolCall, ToolResult, ValueType class FlatBuffersSerializer : def __init__(self): self.builder = flatbuffers.Builder(1024) def serialize_tool_call (self, tool_call): """ 序列化 MCP Tool Call 请求为 FlatBuffers 格式 相比 JSON 序列化,减少 80% 序列化耗时: 0.25 ms 性能提升: 392% JSON 反序列化耗时: 1.56 ms FlatBuffers 反序列化耗时: 0.31 ms 性能提升: 403% 3.2.2 异步化 MCP

    42110编辑于 2026-01-10
  • 来自专栏开源服务指南

    谷歌开源的跨平台高效序列化库:极速访问,内存高效 | 开源日报 No.289

    google/flatbuffershttps://github.com/google/flatbuffers Stars: 22.5k License: Apache-2.0 flatbuffers 以下是 flatbuffers 项目的主要功能、关键特性核心优势: 内存效率:flatbuffers 通过直接访问序列化数据而不需要解析,实了最大内存效率。

    35810编辑于 2024-07-10
  • 来自专栏AI系统

    【AI系统】推理文件格式

    下文将介绍 Protobuf 和 FlatBuffers 两种流行的目标文件格式。 FlatBuffers 主要针对部署和对性能有要求的应用。相对于 Protocol Buffers,FlatBuffers 不需要解析,只通过序列化后的二进制 buffer 即可完成数据访问。 MNN 模型文件采用的存储结构是 FlatBuffers。 节点解析扩展需要依赖 flatbuffers 和 protobuf 及三方框架的序列化文件。 Protobuf VS FlatBuffers下面的表格从支持的语言、版本、协议文件、代码生成工具及协议字段类型几个方面比较了 ProtoBufers 和 Flatbuffers 两种格式:Proto 

    1.5K10编辑于 2024-12-05
  • 转载:【AI系统】推理文件格式

    下文将介绍 Protobuf 和 FlatBuffers 两种流行的目标文件格式。 FlatBuffers 主要针对部署和对性能有要求的应用。相对于 Protocol Buffers,FlatBuffers 不需要解析,只通过序列化后的二进制 buffer 即可完成数据访问。 MNN 模型文件采用的存储结构是 FlatBuffers。 节点解析扩展需要依赖 flatbuffers 和 protobuf 及三方框架的序列化文件。 Protobuf VS FlatBuffers下面的表格从支持的语言、版本、协议文件、代码生成工具及协议字段类型几个方面比较了 ProtoBufers 和 Flatbuffers 两种格式:Proto 

    1.4K10编辑于 2024-12-13
  • 来自专栏Rust语言学习交流

    【Rust日报】 2019-06-05:actix-web 1.0 正式版发布

    一个用于并发I/O编程的异步字节缓冲区和管道 #IO #async sluice目前发布了 0.4 alpha 版本,基于Rust的async/await语法 Sluice ---- 在Rust中使用FlatBuffers #flatbuffers FlatBuffers是Google的序列化格式。

    92040发布于 2019-07-09
  • 来自专栏Java与Android技术栈

    TensorFlow Lite for Android 初探(附demo)一. TensorFlow Lite二. tflite 格式三. 常用的 Java API四. TensorFlow Lite

    tflite 存储格式是 flatbuffersFlatBuffers 是由Google开源的一个免费软件库,用于实现序列化格式。 因此,如果要给移动端使用的话,必须把 TensorFlow 训练好的 protobuf 模型文件转换成 FlatBuffers 格式。官方提供了 toco 来实现模型格式的转换。 三.

    3.6K53发布于 2018-12-07
  • 来自专栏Rust语言学习交流

    【Rust日报】2022-01-15 Rust Playground 现支持 Monaco 编辑器

    的主要更新: 由 std Vec 支持,从而使其成为: 与 Rust 生态的其它的零拷贝 更少的 unsafe 更符合人体工程学 编译速度更快 相同的性能 支持同步和异步读取和写入 Apache Avro flatbuffers 依赖被 planus 取代,这是 Rust 中 flatbuffers 规范的重新实现 安全性改进和常规维护 完整的更改列表:https://github.com/jorgecarleitao/arrow2

    1.1K10编辑于 2022-03-24
  • 来自专栏贾志刚-OpenCV学堂

    TensorFlow Lite for Android 初探(附demo)

    tflite 存储格式是 flatbuffersFlatBuffers 是由Google开源的一个免费软件库,用于实现序列化格式。 因此,如果要给移动端使用的话,必须把 TensorFlow 训练好的 protobuf 模型文件转换成 FlatBuffers 格式。官方提供了 toco 来实现模型格式的转换。 三.

    1.4K00发布于 2019-11-13
  • 来自专栏jinyu's Blog

    macOS M1(AppleSilicon) 安装TensorFlow环境

    typing_extensions conda install -c conda-forge -y wheel conda install -c conda-forge -y typeguard pip install wrapt flatbuffers tensorflow_estimator google_pasta keras_preprocessing protobuf pip install wrapt flatbuffers tensorflow_estimator

    3.1K30编辑于 2022-03-17
  • 来自专栏AI系统

    【AI系统】自定义计算图 IR

    利用 Protobuf 或 FlatBuffers 等序列化库来定义计算图的中间表示(IR)。这一步骤需要考虑推理引擎的特性和性能优化点,以确保计算图能够满足特定的性能和功能需求。 解析训练模型: 通过解析 AI 框架导出的模型文件,使用 Protobuf / FlatBuffers 提供的 API 定义对接到自定义 IR 的对象。 生成自定义计算图: 通过使用 Protobuf / FlatBuffers 的 API 导出自定义计算图。 根据解析得到的信息,使用 Protobuf 或 FlatBuffers 的 API 来生成自定义的计算图。这一步骤中,可以开始应用各种优化策略,如算子融合、内存布局优化等。 root_type Net将 Net 表声明为根类型,表示 FlatBuffers 序列化和反序列化时的入口点。

    39410编辑于 2024-12-13
领券