4 Stimmen

Vergeudete Bytes in Protokollpuffer-Arrays?

Ich habe einen Protokollpuffer wie diesen eingerichtet:

[ProtoContract]
Foo
{
    [ProtoMember(1)]
    Bar[] Bars;
}

Ein einzelner Balken wird in einen 67 Byte großen Protokollpuffer kodiert. Das klingt ungefähr richtig, weil ich weiß, dass ein Bar ziemlich genau ein 64-Byte-Array ist, und dann gibt es 3 Bytes Overhead für die Längenpräfixierung.

Wenn ich jedoch ein Foo mit einem Array von 20 Bars kodiere, benötigt es 1362 Bytes. 20 * 67 ist 1340, also gibt es 22 Bytes Overhead nur für die Kodierung eines Arrays!

Warum nimmt das so viel Platz ein? Und gibt es irgendetwas, was ich tun kann, um ihn zu reduzieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X