假设我有一个原始的结构,看起来像下面的一些字段:预序列化原消息
message TMessage {
optional TDictionary dictionary = 1;
optional int specificField1 = 2;
optional TOtherMessage specificField2 = 3;
...
}
假设我使用C++。这是在主进程中使用网络将信息发送到一堆节点的消息存根。特别是,dictionary
字段对于所有的序列化消息是相当重的2)通用的,并且下面的所有特定字段都填充了目的节点特有的相对较小的信息。
当然,字典只建立一次,但是它出现了,运行时间的主要部分花费在对每个新节点一次又一次序列化公共的dictionary
部分。
明显的优化是预先将dictionary
序列化为字节字符串,并将其作为bytes
字段放入TMessage
,但这对我来说看起来有点令人讨厌。
我说对了,没有内置的方式来预先序列化消息字段而不破坏消息结构?这听起来像是一个理想的proto编译器插件。