Я пытаюсь сериализовать некоторые данные для потока пакетов UDP, и я получаю огромные накладные расходы от сериализации. Если я кодирую FileData с массивом 1 КБ, я получаю обратно 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()