我有一个可以发送UDP数据包的程序。 数据报由以下结构体表示(注意数据包大小不是固定的):
type packet struct {
dataLength uint16
id [8]byte
pairity, shards, flags byte
blob []byte // length defined by dataLength
}
我使用了编码/二进制包来进行序列化和反序列化,但效率不够高(使用pprof进行分析)。由于这个原因,它浪费了大量CPU时间,我无法充分利用整个网络速度。
例如,请考虑以下代码:
packet := packet{
dataLength: 4,
id: [8]byte{1,2,3,4,5,6,7,8},
pairity: 10,
shards: 50,
flags: 200,
blob: []byte{1,2,3,4},
}
bufToSendOverNetwork := packet.ToBytes()
这个操作的最有效方式是什么(同时也是 .FromBytes 操作的最有效方式)?