假設我有一個原始的結構,看起來像下面的一些字段:預序列化原消息
message TMessage {
optional TDictionary dictionary = 1;
optional int specificField1 = 2;
optional TOtherMessage specificField2 = 3;
...
}
假設我使用C++。這是在主進程中使用網絡將信息發送到一堆節點的消息存根。特別是,dictionary
字段對於所有的序列化消息是相當重的2)通用的,並且下面的所有特定字段都填充了目的節點特有的相對較小的信息。
當然,字典只建立一次,但是它出現了,運行時間的主要部分花費在對每個新節點一次又一次序列化公共的dictionary
部分。
明顯的優化是預先將dictionary
序列化爲字節字符串,並將其作爲bytes
字段放入TMessage
,但這對我來說看起來有點令人討厭。
我說對了,沒有內置的方式來預先序列化消息字段而不破壞消息結構?這聽起來像是一個理想的proto編譯器插件。