]> Cypherpunks.ru repositories - gostls13.git/blob - test/bench/go1/gzip_test.go
all: make copyright headers consistent with one space after period
[gostls13.git] / test / bench / go1 / gzip_test.go
1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // This benchmark tests gzip and gunzip performance.
6
7 package go1
8
9 import (
10         "bytes"
11         gz "compress/gzip"
12         "io"
13         "io/ioutil"
14         "testing"
15 )
16
17 var (
18         jsongunz = bytes.Repeat(jsonbytes, 10)
19         jsongz   []byte
20 )
21
22 func init() {
23         var buf bytes.Buffer
24         c := gz.NewWriter(&buf)
25         c.Write(jsongunz)
26         c.Close()
27         jsongz = buf.Bytes()
28 }
29
30 func gzip() {
31         c := gz.NewWriter(ioutil.Discard)
32         if _, err := c.Write(jsongunz); err != nil {
33                 panic(err)
34         }
35         if err := c.Close(); err != nil {
36                 panic(err)
37         }
38 }
39
40 func gunzip() {
41         r, err := gz.NewReader(bytes.NewBuffer(jsongz))
42         if err != nil {
43                 panic(err)
44         }
45         if _, err := io.Copy(ioutil.Discard, r); err != nil {
46                 panic(err)
47         }
48         r.Close()
49 }
50
51 func BenchmarkGzip(b *testing.B) {
52         b.SetBytes(int64(len(jsongunz)))
53         for i := 0; i < b.N; i++ {
54                 gzip()
55         }
56 }
57
58 func BenchmarkGunzip(b *testing.B) {
59         b.SetBytes(int64(len(jsongunz)))
60         for i := 0; i < b.N; i++ {
61                 gunzip()
62         }
63 }