【发布时间】:2017-11-17 22:19:11
【问题描述】:
假设我有一个如下所示的原型结构:
message TMessage {
optional TDictionary dictionary = 1;
optional int specificField1 = 2;
optional TOtherMessage specificField2 = 3;
...
}
假设我正在使用 C++。这是主进程中使用的消息存根,用于将信息发送到使用网络的节点群。特别是,dictionary 字段 1) 相当重 2) 对于所有序列化消息都是通用的,并且以下所有特定字段都填充了特定于目标节点的相对较小的信息。
当然,字典只构建一次,但运行时间的主要部分花费在为每个新节点一次又一次地序列化公共dictionary 部分时。
明显的优化是将dictionary预序列化为字节字符串并将其作为bytes字段放入TMessage,但这对我来说看起来有点讨厌。
没有内置方法可以在不破坏消息结构的情况下预序列化消息字段,这对吗?这听起来像是一个好的 proto 编译器插件的想法。
【问题讨论】:
标签: c++ optimization serialization protocol-buffers