From: Matt Joiner Date: Tue, 12 Sep 2017 11:12:56 +0000 (+1000) Subject: peer_protocol: Add a benchmark for decoding pieces X-Git-Tag: v1.0.0~406 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=01fee38709610e00945f0174f69699f45a2413e2;p=btrtrc.git peer_protocol: Add a benchmark for decoding pieces --- diff --git a/peer_protocol/decoder_test.go b/peer_protocol/decoder_test.go new file mode 100644 index 00000000..acc769ba --- /dev/null +++ b/peer_protocol/decoder_test.go @@ -0,0 +1,45 @@ +package peer_protocol + +import ( + "bufio" + "io" + "sync" + "testing" + + "github.com/bradfitz/iter" + "github.com/stretchr/testify/require" +) + +func BenchmarkDecodePieces(t *testing.B) { + r, w := io.Pipe() + msg := Message{ + Type: Piece, + Index: 0, + Begin: 1, + Piece: make([]byte, 1<<14), + } + b, err := msg.MarshalBinary() + require.NoError(t, err) + t.SetBytes(int64(len(b))) + go func() { + for { + n, err := w.Write(b) + require.Equal(t, len(b), n) + require.NoError(t, err) + } + }() + d := Decoder{ + R: bufio.NewReader(r), + MaxLength: 1 << 18, + Pool: &sync.Pool{ + New: func() interface{} { + return make([]byte, 1<<14) + }, + }, + } + for range iter.N(t.N) { + var msg Message + require.NoError(t, d.Decode(&msg)) + d.Pool.Put(msg.Piece) + } +}