summaryrefslogtreecommitdiff
path: root/test/bench/go1/gzip_test.go
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-01-30 15:38:19 +0100
committerOndřej Surý <ondrej@sury.org>2012-01-30 15:38:19 +0100
commit4cecda6c347bd6902b960c6a35a967add7070b0d (patch)
treea462e224ff41ec9f3eb1a0b6e815806f9e8804ad /test/bench/go1/gzip_test.go
parent6c7ca6e4d4e26e4c8cbe0d183966011b3b088a0a (diff)
downloadgolang-4cecda6c347bd6902b960c6a35a967add7070b0d.tar.gz
Imported Upstream version 2012.01.27upstream-weekly/2012.01.27
Diffstat (limited to 'test/bench/go1/gzip_test.go')
-rw-r--r--test/bench/go1/gzip_test.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/bench/go1/gzip_test.go b/test/bench/go1/gzip_test.go
new file mode 100644
index 000000000..c9eeb175f
--- /dev/null
+++ b/test/bench/go1/gzip_test.go
@@ -0,0 +1,69 @@
+// 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, err := gz.NewWriter(&buf)
+ if err != nil {
+ panic(err)
+ }
+ c.Write(jsongunz)
+ c.Close()
+ jsongz = buf.Bytes()
+}
+
+func gzip() {
+ c, err := gz.NewWriter(ioutil.Discard)
+ if err != nil {
+ panic(err)
+ }
+ 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()
+ }
+}