fec_test.go 845 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package kcp
  2. import (
  3. "math/rand"
  4. "testing"
  5. )
  6. func BenchmarkFECDecode(b *testing.B) {
  7. const dataSize = 10
  8. const paritySize = 3
  9. const payLoad = 1500
  10. decoder := newFECDecoder(1024, dataSize, paritySize)
  11. b.ReportAllocs()
  12. b.SetBytes(payLoad)
  13. for i := 0; i < b.N; i++ {
  14. if rand.Int()%(dataSize+paritySize) == 0 { // random loss
  15. continue
  16. }
  17. var pkt fecPacket
  18. pkt.seqid = uint32(i)
  19. if i%(dataSize+paritySize) >= dataSize {
  20. pkt.flag = typeFEC
  21. } else {
  22. pkt.flag = typeData
  23. }
  24. pkt.data = make([]byte, payLoad)
  25. decoder.decode(pkt)
  26. }
  27. }
  28. func BenchmarkFECEncode(b *testing.B) {
  29. const dataSize = 10
  30. const paritySize = 3
  31. const payLoad = 1500
  32. b.ReportAllocs()
  33. b.SetBytes(payLoad)
  34. encoder := newFECEncoder(dataSize, paritySize, 0)
  35. for i := 0; i < b.N; i++ {
  36. data := make([]byte, payLoad)
  37. encoder.encode(data)
  38. }
  39. }