From: Albert Nigmatzianov Date: Wed, 20 Sep 2017 14:23:11 +0000 (+0500) Subject: io: Add benchmarks for CopyN X-Git-Tag: go1.10beta1~1051 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=36e1c7ab73591388ba1a7246ada21e0baefd2ce1;p=gostls13.git io: Add benchmarks for CopyN Copied from CL 60630 Current results: name time/op CopyNSmall-4 2.20µs ±90% CopyNLarge-4 136µs ±56% name alloc/op CopyNSmall-4 1.84kB ±21% CopyNLarge-4 128kB ±10% name allocs/op CopyNSmall-4 1.00 ± 0% CopyNLarge-4 1.00 ± 0% Change-Id: If08c0132a773e936c9f61bff96e0aabf58006d31 Reviewed-on: https://go-review.googlesource.com/64932 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- diff --git a/src/io/io_test.go b/src/io/io_test.go index 877e8392e2..e81065c13d 100644 --- a/src/io/io_test.go +++ b/src/io/io_test.go @@ -156,6 +156,30 @@ func TestCopyNWriteTo(t *testing.T) { } } +func BenchmarkCopyNSmall(b *testing.B) { + bs := bytes.Repeat([]byte{0}, 512+1) + rd := bytes.NewReader(bs) + buf := new(Buffer) + b.ResetTimer() + + for i := 0; i < b.N; i++ { + CopyN(buf, rd, 512) + rd.Reset(bs) + } +} + +func BenchmarkCopyNLarge(b *testing.B) { + bs := bytes.Repeat([]byte{0}, (32*1024)+1) + rd := bytes.NewReader(bs) + buf := new(Buffer) + b.ResetTimer() + + for i := 0; i < b.N; i++ { + CopyN(buf, rd, 32*1024) + rd.Reset(bs) + } +} + type noReadFrom struct { w Writer }