UDP パケット ストリームのデータをシリアル化しようとしていますが、シリアル化によって大きなオーバーヘッドが発生しています。FileData を 1k バイトの配列でエンコードすると、2312 バイトが返されます。自分ですべてをエンコードおよびデコードせずに、このオーバーヘッドをどのように削減できますか?
[<Serializable>]
type Response =
| FileSize of String * int64
| FileData of int64 * byte[]
with
static member Decode(packet : byte[]) =
use ms = new MemoryStream(packet)
let bf = new BinaryFormatter()
bf.Deserialize(ms)
|> unbox<Response>
member this.Encode() =
use ms = new MemoryStream()
let bf = new BinaryFormatter()
bf.Serialize(ms, this)
ms.GetBuffer()