From 461e7b7d409dad9406ae1e876ad7032f4356f501 Mon Sep 17 00:00:00 2001 From: Robert Obryk Date: Fri, 29 Mar 2013 14:17:09 -0700 Subject: [PATCH] bytes: Benchmark Buffer's compactions This benchmark verifies that CL #8173043 reduces time spent sliding the Buffer's contents. Results without and with CL #8173043 applied: benchmark old ns/op new ns/op delta BenchmarkBufferFullSmallReads 755336 175054 -76.82% R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/8174043 --- src/pkg/bytes/buffer_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/pkg/bytes/buffer_test.go b/src/pkg/bytes/buffer_test.go index 5b0b8b50cf..75145b05e9 100644 --- a/src/pkg/bytes/buffer_test.go +++ b/src/pkg/bytes/buffer_test.go @@ -509,3 +509,19 @@ func BenchmarkBufferNotEmptyWriteRead(b *testing.B) { } } } + +// Check that we don't compact too often. From Issue 5154. +func BenchmarkBufferFullSmallReads(b *testing.B) { + buf := make([]byte, 1024) + for i := 0; i < b.N; i++ { + var b Buffer + b.Write(buf) + for b.Len()+20 < b.Cap() { + b.Write(buf[:10]) + } + for i := 0; i < 5<<10; i++ { + b.Read(buf[:1]) + b.Write(buf[:1]) + } + } +} -- 2.51.0