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 7package go1 8 9import ( 10 "bytes" 11 gz "compress/gzip" 12 "io" 13 "io/ioutil" 14 "testing" 15) 16 17var ( 18 jsongunz = bytes.Repeat(jsonbytes, 10) 19 jsongz []byte 20) 21 22func init() { 23 var buf bytes.Buffer 24 c := gz.NewWriter(&buf) 25 c.Write(jsongunz) 26 c.Close() 27 jsongz = buf.Bytes() 28} 29 30func 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 40func 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 51func BenchmarkGzip(b *testing.B) { 52 b.SetBytes(int64(len(jsongunz))) 53 for i := 0; i < b.N; i++ { 54 gzip() 55 } 56} 57 58func BenchmarkGunzip(b *testing.B) { 59 b.SetBytes(int64(len(jsongunz))) 60 for i := 0; i < b.N; i++ { 61 gunzip() 62 } 63} 64