【问题标题】:write multiple protobuf messages : 1 message with 1 repeated attribute or write different messages?编写多个 protobuf 消息:1 条具有 1 个重复属性的消息或编写不同的消息?
【发布时间】:2019-06-05 18:42:10
【问题描述】:

我需要在一个文件中写入多个 protobuf 消息。

我看到了关于 writeDelimitedFrom and parseDelimitedFrom in C++ 的帖子,想知道是最好使用它(或类似的东西,另一种分隔方式)还是制作一个“超级消息”,只包含我需要乘以写入的消息重复属性。

syntax = "proto2";
package test;

message myMessage {
  required int32 TimeStamp = 1;
}
message Container {
  repeated myMessage messages = 1;
}

在一个文件中写入多个myMessage 是否更有趣?

我认为使用读/写 DelimitedFrom 更优化(因为我只能附加最后一条消息)但使用重复属性更容易但到SerializeToOstream 我想我必须传递整个Container
我认为不可能只序列化部分消息以将其附加到输出文件中,因为我从未见过它,但我可能是错的

【问题讨论】:

    标签: c++ protocol-buffers


    【解决方案1】:

    就像你一样难过,这两种选择都是可能的。

    在 myMessages 很少的情况下,Container 是简单的解决方案。这是因为您不必编写在回读文件时挑选出各个消息的代码。

    是的,您必须通过整个容器。这就是 myMessages 的数量发挥作用的地方。如果这是一个很大的数字,您可能最好一次将它们序列化一个 myMessage。将其附加到文件并可能将其刷新到磁盘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      相关资源
      最近更新 更多