]> Cypherpunks repositories - gostls13.git/commitdiff
net/textproto: redo BenchmarkReadMIMEHeader
authorTravis Bischel <travis.bischel@gmail.com>
Sun, 9 Sep 2018 21:45:34 +0000 (14:45 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 27 Sep 2018 19:58:04 +0000 (19:58 +0000)
This benchmark is odd currently because it uses inconsistent cases
between benchmark iterations, and each iteration actually does a bit of
testing.

This separates the two benchmark cases into two separate benchmarks and
removes the testing done on each iteration. The unit tests above
suffice.

The benchmark being more succinct will make it easier to gauge the
benefits of any future MIME header reading changes.

Change-Id: I2399fab28067f1aeec3d9b16951d39d787f8b39c
Reviewed-on: https://go-review.googlesource.com/134225
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/net/textproto/reader_test.go

index 7cff7b457975407b68df03579bd553f43ac2e5c3..f85fbdc36d7d9d14348dc8cf8312c9b7dcef9ad7 100644 (file)
@@ -382,31 +382,25 @@ Non-Interned: test
 
 func BenchmarkReadMIMEHeader(b *testing.B) {
        b.ReportAllocs()
-       var buf bytes.Buffer
-       br := bufio.NewReader(&buf)
-       r := NewReader(br)
-       for i := 0; i < b.N; i++ {
-               var want int
-               var find string
-               if (i & 1) == 1 {
-                       buf.WriteString(clientHeaders)
-                       want = 10
-                       find = "Cookie"
-               } else {
-                       buf.WriteString(serverHeaders)
-                       want = 9
-                       find = "Via"
-               }
-               h, err := r.ReadMIMEHeader()
-               if err != nil {
-                       b.Fatal(err)
-               }
-               if len(h) != want {
-                       b.Fatalf("wrong number of headers: got %d, want %d", len(h), want)
-               }
-               if _, ok := h[find]; !ok {
-                       b.Fatalf("did not find key %s", find)
-               }
+       for _, set := range []struct {
+               name    string
+               headers string
+       }{
+               {"client_headers", clientHeaders},
+               {"server_headers", serverHeaders},
+       } {
+               b.Run(set.name, func(b *testing.B) {
+                       var buf bytes.Buffer
+                       br := bufio.NewReader(&buf)
+                       r := NewReader(br)
+
+                       for i := 0; i < b.N; i++ {
+                               buf.WriteString(set.headers)
+                               if _, err := r.ReadMIMEHeader(); err != nil {
+                                       b.Fatal(err)
+                               }
+                       }
+               })
        }
 }