protobuf中流消息实现的比较

2024-04-11

对同一类型的多个消息进行编码的每种流实现的权衡、优点和缺点是什么?

它们有什么不同吗?我想要实现的是将盒子向量存储到 protobuf 中。

Impl 1 :

package foo;

message Boxes
{ 
  message Box 
  { required int32 w = 1;
    required int32 h = 2;
  }

  repeated Box boxes = 1; 
}

Impl 2:

package foo;

message Box 
{ required int32 w = 1;
  required int32 h = 2;
}

message Boxes 
{ repeated Box boxes = 1; 
}

Impl 3 :将多个这样的消息流式传输到同一个文件中。

package foo;

message Box 
{ required int32 w = 1;
  required int32 h = 2;
}

马克·格拉维尔(Marc Gravell)的回答当然是正确的,但他错过了一点

  • 选项 1 和 2(重复选项)将序列化/反序列化所有盒子同时
  • 选项 3(文件中的多条消息)将序列化/反序列化一盒接一盒。 如果使用 java,则可以使用分隔文件(这将在消息开头添加 Var-Int 长度)。

大多数时候,使用重复消息还是多条消息并不重要,但如果有数百万/数十亿个盒子,则选项 1 和 2(重复)以及选项 3(文件中的多条消息)的内存将成为问题将是最好的选择。

总结来说:

  • 如果有数百万/数十亿个盒子使用 -选项 3(文件中有多条消息).
  • 否则使用其中之一重复选项 (1/2)因为它更简单并且支持所有 Protocol buffers 版本。

就我个人而言,我希望看到“标准”多消息格式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

protobuf中流消息实现的比较 的相关文章

  • TensorFlow 将图保存到文件中/从文件中加载图

    从我到目前为止收集到的信息来看 有几种不同的方法可以将 TensorFlow 图转储到文件中 然后将其加载到另一个程序中 但我还没有找到关于它们如何工作的明确示例 信息 我已经知道的是 使用以下命令将模型的变量保存到检查点文件 ckpt 中
  • Gradle 禁用所有增量编译和并行构建

    在一小部分 sbt 项目中 我们需要 protobuf grpc 编译 并且因为只有 Gradle 对此有正常支持 所以我们用它来执行 protobuf 相关任务 有时它会随机失败编译相同的东西 但重试时会成功 我们确定这是因为增量 Jav
  • 如何在 sbt 0.13 中使用 sbt-scalabuff 插件?

    我正在尝试使用sbt scalabuff 插件 https github com sbt sbt scalabuff 但是sbt一直抱怨找不到插件 插件文档也没有说明解析器 url 该插件是否已弃用或者我的 Scala 版本不受支持 Det
  • Protocol Buffer 首次使用高延迟

    在我们的一个 java 应用程序中 我们有相当多的协议缓冲区类 并且 jar 本质上公开了一个接口 其中包含另一个应用程序使用的一种方法 我们注意到 第一次调用此方法时 调用时间非常长 gt 500ms 而后续调用则要快得多 当在不同的应用
  • 如何访问 proto.EnumValueOptions 扩展值

    我有类似的设置 如下所示 如何访问我的扩展值XYZ使用 github com golang protobuf proto 进行枚举 extend google protobuf EnumValueOptions Details meta 5
  • 将 gtfs 实时数据流式传输为人类可读的格式

    我正在尝试使用 Java 下载可读的 gtfs 实时数据 协议缓冲区格式 以便我可以在文本文件中查看它 我尝试了几种方法 方法 1 URL url new URL uri byte buffer new byte 4096 InputStr
  • App Engine 和 Commons FileUpload

    我正在使用以下代码从 Android 设备发送一条使用 google 协议缓冲区构建的消息 Set up the HttpClient HttpClient client new DefaultHttpClient String url h
  • 使用 Protocol Buffer 进行 Java 序列化

    我想在 Java 应用程序中使用 protobuf 来促进序列化 并且我对 Google 网站上的这段引用有疑问 协议缓冲区和 O O 设计 Protocol Buffer 类基本上是 哑数据持有者 如结构体 C 他们的头等舱成绩不好 对象
  • 无法分配 RepeatedField 类型的属性或索引器 — 它是只读的

    我是 Google ProtoBuf 文件的新手 我在 ProtoBuf 文件中有以下消息 message AvailabilityOfLockersResp uint32 NumberOfAvailableLockers repeated
  • Protocol Buffer:如何导入?

    我有 2 个 proto 文件 第一个文件 package com test model message ProtoModel required CustomObj custom 1 第二个文件 package com test model
  • C# RestSharp PUT 方法并发送原始字节 (protobuf)

    如何使用 HTTP PUT 方法发送字节数组 方法AddFile班级的RestRequest发送额外的标头 方法AddParameter需要一个Object type 我是怎么做的 byte data using var ms new Me
  • protobuf 取出部分数据的安全性如何?

    在没有任何加密的情况下 如果接收者拥有序列化的 Protobuf 文件 但没有生成的 Protobuf 类 他们无权访问定义其结构的 proto 文件 他们是否有可能获取 Protobuf 中的任何数据来自二进制文件 如果他们有权访问 pr
  • 使用构建器和 MapStruct 将 null 值映射到默认值

    我想映射字段Source to Target类 如果源值为null 我想根据数据类型将其转换为默认值 表示字符串 0表示数字类型等 为了设置值 我没有使用常规设置器 而是使用构建器 带有protobuf https developers g
  • 有没有办法在 protobuf (proto2) 中创建类型别名?

    是否可以创建 protobuf 标量类型的别名 例如 我想使用Sequence替代string 即使它们是二进制等价的 我的近期目标是使文档 使用 protoc gen doc 生成 更容易理解 理想情况下 这种类型应该用支持类型检查的语言
  • 如何在protobuf消息中添加int数组

    我必须编写一个 protobuf 消息 它应该有 1 个整数变量和一个整数数组 package protobuf message myProto optional uint32 message id 1 optional int updat
  • 如何直接从protobuf创建GRPC客户端而不将其编译成java代码

    使用 gRPC 时 我们需要通过协议缓冲区编译器 protoc 或使用 Gradle 或 Maven protoc 构建插件从 proto 服务定义生成 gRPC 客户端和服务器接口 Flow now protobuf file gt ja
  • C# .net 协议缓冲区 - protobuf-net 支持序列化对象值字典吗?

    我是协议缓冲区的新手 我正在使用 VS2010 的 protobuf net 从我在这里读到的内容协议缓冲区中的字典 https stackoverflow com questions 4194845 dictionary in proto
  • protoc-gen-go:无法确定“simple.proto”的 Go 导入路径

    我有包含以下内容的简单原型文件 syntax proto3 package main message Person string name 1 int32 age 2 我正在尝试使用 protoc 为其生成 go 代码 我跑 protoc
  • 将 JSON 对象转换为 protobuf IStruct

    我正在使用Nodejs 的 Dialogflow API https cloud google com nodejs docs reference dialogflow 0 8 x google cloud dialogflow v2 这个
  • gRPC + 图片上传

    我想创建一个简单的gRPC用户可以上传他 她的图片的端点 协议缓冲区声明如下 message UploadImageRequest AuthToken auth 1 An enum with either JPG or PNG FileTy

随机推荐

  • 如何递归文件夹并显示相对文件夹路径?

    这是一个简单的脚本 srcpth C Users Mark Desktop dummy files Get ChildItem Path srcpth File Recurse foreach f in files filen f Name
  • 从 Google BigQuery 中过滤或替换非英文字符

    我正在从 Google Biqquery 中的查询中提取数据 我通过 python 脚本连接到 Google API 在 python 脚本中执行查询并将查询结果写入 CSV 文件 当我从脚本中执行示例数据 100 行 的查询时 一切看起来
  • 是否有用于带有受控点的 python 图像变形/图像变形的库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您拍摄图像并标记特定点 例如 标记人的眼睛 鼻子 嘴巴等周围的区域 然后将它们转换为另一张图像中标记的点
  • IIS 7元数据库:以编程方式设置框架版本和托管管道模式

    怎样才能定睛 net框架版本和托管管道模式通过 C 以编程方式实现 IIS 7 编程 元数据库属性的名称是什么 你可以使用微软网络管理 http msdn microsoft com en us library microsoft web
  • 通过 Selenium Grid 并行运行 Jasmine 集成测试

    我正在尝试使用 jasmine 和 selenium webdriver 通过 node js 实现浏览器自动化 为了并行运行测试 我需要配置什么 我知道在 java 堆栈上 TestNG 通常用于运行并行测试 使用 jasmine 和 n
  • 获取 Ansible 控制机 IP 地址的最佳方法

    我正在使用 Ansible 和ufw在我的服务器上设置防火墙 作为ufw规则 我希望允许来自 Ansible 控制机的 SSH 但不允许来自其他任何地方 我的问题是 获取控制机本身的 IP 地址以便我可以将其放入规则中的最佳方法是什么 我知
  • 如何从 dxf 文件解析 nurbs 曲面?或者你知道用于解析它的库(对于js,如果存在或任何其他语言)?

    我正在尝试解析 autocad nurbs 曲面并使用 JavaScript 中的 webGL 进行三角测量绘制 我已经在寻找 bjnortier 的 dxf 解析器 它支持大多数实体 如直线 圆弧 3Dface 折线 lwpolyline
  • 日期时间字段之间的时间差 SSRS

    我有两个日期时间字段 我需要显示它们之间的差异 我用这个表达式来计算它 DateDiff n Fields hra atncion Value Fields fcha incio Value 结果列应该打开HH mm 但结果是 Long 表
  • 洋葱结构与六边形结构的比较

    它们之间有什么区别 洋葱 六边形 根据我的理解 它们是相同的 它们专注于应用程序核心的领域 并且应该与技术 框架无关 如果有的话 它们之间有什么区别 另外 我认为使用其中一种架构或什至针对 N 层架构并没有真正的优势 如果做得不好 仅仅遵循
  • Mips:asciiz vs ascii,打印许多变量

    我知道 asciiz 字符串以 0 结尾 而 ascii 则不是 但我还是很困惑 在这段代码中 为什么会打印 一二三三四五五 而不是简单地按照与打印命令相同的顺序打印它们 data str1 asciiz One str2 ascii Tw
  • d3 v5 轴比例改变平移方式太多

    我有一个以时间为 X 轴的简单图表 预期的行为是 在图表中拖动时 X 轴只会平移以显示数据的其他部分 为了方便起见 由于我的 X 轴位于反应组件中 因此创建图表的函数将 X 比例 x 轴及其附加到的元素设置为this xScale this
  • facebook android sdk 4.0,从 LoginManager 取消注册回调的方法

    我在我的 Android 应用程序中使用 facebook sdk 4 0 我有一个活动 其功能是向 facebook 发布一些消息 这不是我的应用程序的主要活动 我正在执行以下操作来登录 Facebook 然后发布消息 FacebookS
  • 如何找出apache上次重启的时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个 VPSkloxo控制面板已安装 我在用CentOS 5 8 32 bit 我今天重新启动了 Apache 但忘记了启动时间 知道确切的时间非
  • 在 Ansible 中将 Python 脚本的输出转换为 dict

    我有一个名为test py这是 usr bin python a A 2 nB 5 print a 现在 在我的 Ansible 剧本中 我正在运行此脚本并使用此任务将输出注册到变量 name Create variable from th
  • 在删除根节点之前,XSLT 转换不起作用

    我尝试使用 XSLT 从 Met Office Web 服务中的以下 XML 中提取标题 但是我的 XSLT 选择返回空白 SOURCE
  • 使用 2leg oauth 令牌调用 Bitbucket REST API

    我正在尝试使用 2 legged oauth 身份验证来调用 bitbucket 的 api I call https bitbucket org api 1 0 oauth request token 使用我的 oauth 秘密和密钥并获
  • 如何模拟Python静态方法和类方法

    如何模拟具有未绑定方法的类 例如 这个类有一个 classmethod and a staticmethod class Calculator object def init self multiplier self multiplier
  • _T 在 CString 中代表什么

    字符串中的 T 代表什么 例如 T Hello 我在需要 unicode 支持的项目中看到过这个 它实际上告诉处理器什么 T代表 文本 当且仅当您使用 Unicode 支持来编译源代码时 它才会将您的文字转换为 Unicode 宽字符文字
  • 在并发读取中是否使用互斥体

    我正在 Linux 中使用 C 进行编程 并且使用 pthreads 库 我正在使用互斥体来保护一些共享变量 但我不确定在这种特定情况下是否有必要使用互斥体 我有 3 个线程 共享变量是一个字符串 全局变量 线程1更改它的值 然后线程2和线
  • protobuf中流消息实现的比较

    对同一类型的多个消息进行编码的每种流实现的权衡 优点和缺点是什么 它们有什么不同吗 我想要实现的是将盒子向量存储到 protobuf 中 Impl 1 package foo message Boxes message Box requir