mirror of https://github.com/ehang-io/nps
44 lines
845 B
Go
44 lines
845 B
Go
package kcp
|
|
|
|
import (
|
|
"math/rand"
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkFECDecode(b *testing.B) {
|
|
const dataSize = 10
|
|
const paritySize = 3
|
|
const payLoad = 1500
|
|
decoder := newFECDecoder(1024, dataSize, paritySize)
|
|
b.ReportAllocs()
|
|
b.SetBytes(payLoad)
|
|
for i := 0; i < b.N; i++ {
|
|
if rand.Int()%(dataSize+paritySize) == 0 { // random loss
|
|
continue
|
|
}
|
|
var pkt fecPacket
|
|
pkt.seqid = uint32(i)
|
|
if i%(dataSize+paritySize) >= dataSize {
|
|
pkt.flag = typeFEC
|
|
} else {
|
|
pkt.flag = typeData
|
|
}
|
|
pkt.data = make([]byte, payLoad)
|
|
decoder.decode(pkt)
|
|
}
|
|
}
|
|
|
|
func BenchmarkFECEncode(b *testing.B) {
|
|
const dataSize = 10
|
|
const paritySize = 3
|
|
const payLoad = 1500
|
|
|
|
b.ReportAllocs()
|
|
b.SetBytes(payLoad)
|
|
encoder := newFECEncoder(dataSize, paritySize, 0)
|
|
for i := 0; i < b.N; i++ {
|
|
data := make([]byte, payLoad)
|
|
encoder.encode(data)
|
|
}
|
|
}
|