summaryrefslogtreecommitdiffstats
path: root/test/bench/go1/gzip_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/bench/go1/gzip_test.go')
-rw-r--r--test/bench/go1/gzip_test.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/test/bench/go1/gzip_test.go b/test/bench/go1/gzip_test.go
new file mode 100644
index 0000000..d3f98da
--- /dev/null
+++ b/test/bench/go1/gzip_test.go
@@ -0,0 +1,62 @@
+// 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"
+ "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(io.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(io.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()
+ }
+}