オプションのprotobufフィールドにデフォルト値を設定して、ワイヤを介して送信されるデータを最小限に抑える必要がありますか?オプションのprotobufフィールドにデフォルト値を設定しないでください。
メッセージのバイトサイズを最小限に抑えたいと考えています。これを実現するために、私がいたと考えることができ1つの最適化:
if(message->my_optional_field() != value)
message->set_my_optional_field(value);
これは、意図した値がデフォルト値に等しいので、あるときに呼び出されるhas_my_optional_field()
を防止し、直列化配列に表示されるフィールドを防ぎます。これは良い練習ですか? protobufは、このような何かを箱から出していますか?
質問はhow do has_field() methods relate to default values in protobuf? と似ています。実際には、回答の1つに答えがあります。しかしその後のコメントは、この主張に異議を唱えている。
実際に面白かったです。なぜ彼らは設定可能なデフォルト値の概念を廃止したのですか?それは後退のように聞こえる。 –
@MukulGupta AFAICT、彼らはProtobufsをGoの生の構造体にして、Goにコンストラクタがないことを望んでいました。それはゼロをすべて初期化します。だから彼らはprotobufを変更しました。犬はIMOを揺らす。 –