mirror of
https://github.com/golang/go
synced 2024-11-19 22:54:39 -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:
parent
4896b17584
commit
78879b3b8b
@ -9,6 +9,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@ -117,16 +118,34 @@ func (devNull) Write(p []byte) (int, os.Error) {
|
|||||||
return len(p), nil
|
return len(p), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkDecoder(b *testing.B) {
|
func benchmarkDecoder(b *testing.B, n int) {
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
|
b.SetBytes(int64(n))
|
||||||
buf0, _ := ioutil.ReadFile("../testdata/e.txt")
|
buf0, _ := ioutil.ReadFile("../testdata/e.txt")
|
||||||
|
buf0 = buf0[:10000]
|
||||||
compressed := bytes.NewBuffer(nil)
|
compressed := bytes.NewBuffer(nil)
|
||||||
w := NewWriter(compressed, LSB, 8)
|
w := NewWriter(compressed, LSB, 8)
|
||||||
|
for i := 0; i < n; i += len(buf0) {
|
||||||
io.Copy(w, bytes.NewBuffer(buf0))
|
io.Copy(w, bytes.NewBuffer(buf0))
|
||||||
|
}
|
||||||
w.Close()
|
w.Close()
|
||||||
buf1 := compressed.Bytes()
|
buf1 := compressed.Bytes()
|
||||||
|
buf0, compressed, w = nil, nil, nil
|
||||||
|
runtime.GC()
|
||||||
b.StartTimer()
|
b.StartTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
io.Copy(devNull{}, NewReader(bytes.NewBuffer(buf1), LSB, 8))
|
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)
|
||||||
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -99,13 +100,33 @@ func TestWriter(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkEncoder(b *testing.B) {
|
func benchmarkEncoder(b *testing.B, n int) {
|
||||||
b.StopTimer()
|
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()
|
b.StartTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
w := NewWriter(devNull{}, LSB, 8)
|
w := NewWriter(devNull{}, LSB, 8)
|
||||||
w.Write(buf)
|
w.Write(buf1)
|
||||||
w.Close()
|
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)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user