我有一個發(fā)送 udp 數(shù)據(jù)包的程序。包數(shù)據(jù)報由以下結(jié)構(gòu)表示(注意包的大小不是固定的):type packet struct { dataLength uint16 id [8]byte pairity, shards, flags byte blob []byte // length defined by dataLength }我使用編碼/二進(jìn)制包進(jìn)行序列化/反序列化,但效率不夠(使用 pprof)。它浪費了大量 CPU 時間,因此我無法利用整個網(wǎng)絡(luò)速度。例如,考慮以下代碼: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()執(zhí)行此操作(以及.FromBytes操作)的最有效方法是什么
結(jié)構(gòu)體的高效二進(jìn)制編碼
慕桂英3389331
2021-12-27 17:03:03