1
0
mirror of https://github.com/golang/go synced 2024-11-25 06:37:58 -07:00

compress/lzw: benchmark a range of input sizes.

R=rsc, nigeltao_gnome
CC=golang-dev
https://golang.org/cl/4240096
This commit is contained in:
Nigel Tao 2011-03-09 16:32:02 +11:00
parent 4896b17584
commit 78879b3b8b
2 changed files with 45 additions and 5 deletions

View 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)
}

View 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)
}