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.go68
1 files changed, 68 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..e73665b
--- /dev/null
+++ b/test/bench/go1/gzip_test.go
@@ -0,0 +1,68 @@
+// 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"
+)
+
+func makeGunzip(jsonbytes []byte) []byte {
+ return bytes.Repeat(jsonbytes, 10)
+}
+
+func makeGzip(jsongunz []byte) []byte {
+ var buf bytes.Buffer
+ c := gz.NewWriter(&buf)
+ c.Write(jsongunz)
+ c.Close()
+ return buf.Bytes()
+}
+
+func gzip(jsongunz []byte) {
+ c := gz.NewWriter(io.Discard)
+ if _, err := c.Write(jsongunz); err != nil {
+ panic(err)
+ }
+ if err := c.Close(); err != nil {
+ panic(err)
+ }
+}
+
+func gunzip(jsongz []byte) {
+ 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) {
+ jsonbytes := makeJsonBytes()
+ jsongunz := makeGunzip(jsonbytes)
+ b.ResetTimer()
+ b.SetBytes(int64(len(jsongunz)))
+ for i := 0; i < b.N; i++ {
+ gzip(jsongunz)
+ }
+}
+
+func BenchmarkGunzip(b *testing.B) {
+ jsonbytes := makeJsonBytes()
+ jsongunz := makeGunzip(jsonbytes)
+ jsongz := makeGzip(jsongunz)
+ b.ResetTimer()
+ b.SetBytes(int64(len(jsongunz)))
+ for i := 0; i < b.N; i++ {
+ gunzip(jsongz)
+ }
+}