]> Cypherpunks repositories - gostls13.git/commitdiff
compress/lzw: benchmark a range of input sizes.
authorNigel Tao <nigeltao@golang.org>
Wed, 9 Mar 2011 05:32:02 +0000 (16:32 +1100)
committerNigel Tao <nigeltao@golang.org>
Wed, 9 Mar 2011 05:32:02 +0000 (16:32 +1100)
R=rsc, nigeltao_gnome
CC=golang-dev
https://golang.org/cl/4240096

src/pkg/compress/lzw/reader_test.go
src/pkg/compress/lzw/writer_test.go

index 7795a4c14896486f07129ebea00addf3a9c0a27a..4b5dfaadea2023c51568f4109615decb22a2c683 100644 (file)
@@ -9,6 +9,7 @@ import (
        "io"
        "io/ioutil"
        "os"
+       "runtime"
        "strconv"
        "strings"
        "testing"
@@ -117,16 +118,34 @@ func (devNull) Write(p []byte) (int, os.Error) {
        return len(p), nil
 }
 
-func BenchmarkDecoder(b *testing.B) {
+func benchmarkDecoder(b *testing.B, n int) {
        b.StopTimer()
+       b.SetBytes(int64(n))
        buf0, _ := ioutil.ReadFile("../testdata/e.txt")
+       buf0 = buf0[:10000]
        compressed := bytes.NewBuffer(nil)
        w := NewWriter(compressed, LSB, 8)
-       io.Copy(w, bytes.NewBuffer(buf0))
+       for i := 0; i < n; i += len(buf0) {
+               io.Copy(w, bytes.NewBuffer(buf0))
+       }
        w.Close()
        buf1 := compressed.Bytes()
+       buf0, compressed, w = nil, nil, nil
+       runtime.GC()
        b.StartTimer()
        for i := 0; i < b.N; i++ {
                io.Copy(devNull{}, NewReader(bytes.NewBuffer(buf1), LSB, 8))
        }
 }
+
+func BenchmarkDecoder1e4(b *testing.B) {
+       benchmarkDecoder(b, 1e4)
+}
+
+func BenchmarkDecoder1e5(b *testing.B) {
+       benchmarkDecoder(b, 1e5)
+}
+
+func BenchmarkDecoder1e6(b *testing.B) {
+       benchmarkDecoder(b, 1e6)
+}
index 715b974aa1ec20ab11fcb65ef1e95a51e938d2ab..2e0a8de0a87f84124d3c754b8b7831177b7de479 100644 (file)
@@ -8,6 +8,7 @@ import (
        "io"
        "io/ioutil"
        "os"
+       "runtime"
        "testing"
 )
 
@@ -99,13 +100,33 @@ func TestWriter(t *testing.T) {
        }
 }
 
-func BenchmarkEncoder(b *testing.B) {
+func benchmarkEncoder(b *testing.B, n int) {
        b.StopTimer()
-       buf, _ := ioutil.ReadFile("../testdata/e.txt")
+       b.SetBytes(int64(n))
+       buf0, _ := ioutil.ReadFile("../testdata/e.txt")
+       buf0 = buf0[:10000]
+       buf1 := make([]byte, n)
+       for i := 0; i < n; i += len(buf0) {
+               copy(buf1[i:], buf0)
+       }
+       buf0 = nil
+       runtime.GC()
        b.StartTimer()
        for i := 0; i < b.N; i++ {
                w := NewWriter(devNull{}, LSB, 8)
-               w.Write(buf)
+               w.Write(buf1)
                w.Close()
        }
 }
+
+func BenchmarkEncoder1e4(b *testing.B) {
+       benchmarkEncoder(b, 1e4)
+}
+
+func BenchmarkEncoder1e5(b *testing.B) {
+       benchmarkEncoder(b, 1e5)
+}
+
+func BenchmarkEncoder1e6(b *testing.B) {
+       benchmarkEncoder(b, 1e6)
+}