From 36e1c7ab73591388ba1a7246ada21e0baefd2ce1 Mon Sep 17 00:00:00 2001 From: Albert Nigmatzianov Date: Wed, 20 Sep 2017 19:23:11 +0500 Subject: [PATCH] io: Add benchmarks for CopyN MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/io/io_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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 } -- 2.48.1