2

シリアル化された整数をネットワーク経由で送信するときのメッセージ サイズを小さくしたいと考えています。以下のセクションでは、 buff.Length は 256 です - 効率的にするためにオーバーヘッドが大きくなります! どうすれば最小 (4 バイト + 最小オーバーヘッド) に減らすことができますか?

            int val = RollDice(6);
            // Should 'memoryStream' be allocated each time!
            MemoryStream memoryStream = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(memoryStream, val);
            byte[] buff = memoryStream.GetBuffer();

前もって感謝します、 --- KostaZ

4

1 に答える 1

1

protobuf.net を見てください...これは非常に優れたシリアル化ライブラリです (NuGet で入手できます)。また、理想的には、メモリ ストリームの周りに "using" ステートメントを使用する必要があります。

以下のコメントに対応するには、最も効率的な方法はユース ケースによって異なります。何をシリアル化する必要があるかが正確にわかっていて、汎用のシリアライザーが必要ない場合は、オーバーヘッドがまったくない独自のバイナリ フォーマッターを作成できます (カスタム フォーマッターには詳細があります)。

このリンクには、参照用に BinaryFormatter と protobuf.net の比較があります。

于 2012-03-24T17:09:51.857 に答える