c++ - 将 C++ Protobuf Arena 用于重复字段的最佳方式是什么?
问题描述
我有以下protobuf:
message Message {
...
}
message Response {
repeated Message messages = 0;
}
service MessageService {
GetMessage() return (Reponse);
}
在我的 C++ 代码中,我正在进行一些消息计算并希望将消息添加到messages
字段中。我在做:
Arena arena;
// some iteration loop
for {
auto message =
google::protobuf::Arena::CreateMessage<Message>(arena);
response->mutable_messages()->AddAllocated(message);
}
消息的总大小很大,所以我认为使用 Arena 会更好。但似乎AddAllocated
会复制竞技场(https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.repeated_field#RepeatedPtrField.AddAllocated.details),因为messages
字段不是来自竞技场。
这样做的最佳方法是什么?我应该使用竞技场吗?
解决方案
推荐阅读
- android - 如何仅使用微型 USB 电缆(无 OTG 适配器)在已植根的 Galaxy S7 上配置静态 IP 和以太网?
- makefile - 在链接 Fortran 可执行文件之前,如何通过不同的目录进行 make 扫描以查找和编译模块
- java - 我如何才能解析 json 响应,以便我只能使用 Java 获取密钥?
- symfony - 允许 Symfony 4 和 Doctrine 重复多对多关系
- excel - Excel 尝试向数据库查询连接显示最近的刷新时间和日期
- sql - 在我的 where 子句中需要有关多个条件的帮助
- python - Google Stackdriver 日志记录:write_log_entries,数组里面有什么?
- reactjs - Openweather API JSON 数据
- jestjs - 测试报告为慢的开玩笑阈值
- python - 背景图像不显示在 Tkinter 程序上?