From: Robert Obryk Date: Fri, 29 Mar 2013 21:17:09 +0000 (-0700) Subject: bytes: Benchmark Buffer's compactions X-Git-Tag: go1.1rc2~265 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=461e7b7d409dad9406ae1e876ad7032f4356f501;p=gostls13.git 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 --- 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]) + } + } +}