| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // This benchmark tests gzip and gunzip performance. |
| |
| package go1 |
| |
| import ( |
| "bytes" |
| gz "compress/gzip" |
| "io" |
| "io/ioutil" |
| "testing" |
| ) |
| |
| var ( |
| jsongunz = bytes.Repeat(jsonbytes, 10) |
| jsongz []byte |
| ) |
| |
| func init() { |
| var buf bytes.Buffer |
| c := gz.NewWriter(&buf) |
| c.Write(jsongunz) |
| c.Close() |
| jsongz = buf.Bytes() |
| } |
| |
| func gzip() { |
| c := gz.NewWriter(ioutil.Discard) |
| if _, err := c.Write(jsongunz); err != nil { |
| panic(err) |
| } |
| if err := c.Close(); err != nil { |
| panic(err) |
| } |
| } |
| |
| func gunzip() { |
| r, err := gz.NewReader(bytes.NewBuffer(jsongz)) |
| if err != nil { |
| panic(err) |
| } |
| if _, err := io.Copy(ioutil.Discard, r); err != nil { |
| panic(err) |
| } |
| r.Close() |
| } |
| |
| func BenchmarkGzip(b *testing.B) { |
| b.SetBytes(int64(len(jsongunz))) |
| for i := 0; i < b.N; i++ { |
| gzip() |
| } |
| } |
| |
| func BenchmarkGunzip(b *testing.B) { |
| b.SetBytes(int64(len(jsongunz))) |
| for i := 0; i < b.N; i++ { |
| gunzip() |
| } |
| } |