compress/lzw: benchmark a range of input sizes.

R=rsc, nigeltao_gnome
CC=golang-dev
https://golang.org/cl/4240096
diff --git a/src/pkg/compress/lzw/reader_test.go b/src/pkg/compress/lzw/reader_test.go
index 7795a4c..4b5dfaa 100644
--- a/src/pkg/compress/lzw/reader_test.go
+++ b/src/pkg/compress/lzw/reader_test.go
@@ -9,6 +9,7 @@
 	"io"
 	"io/ioutil"
 	"os"
+	"runtime"
 	"strconv"
 	"strings"
 	"testing"
@@ -117,16 +118,34 @@
 	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)
+}
diff --git a/src/pkg/compress/lzw/writer_test.go b/src/pkg/compress/lzw/writer_test.go
index 715b974..2e0a8de 100644
--- a/src/pkg/compress/lzw/writer_test.go
+++ b/src/pkg/compress/lzw/writer_test.go
@@ -8,6 +8,7 @@
 	"io"
 	"io/ioutil"
 	"os"
+	"runtime"
 	"testing"
 )
 
@@ -99,13 +100,33 @@
 	}
 }
 
-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)
+}