go.image/tiff: add a benchmark for the encoder

The idea is to see whether it is worthwhile to implement special cases.

On my Mac Book Pro:

BenchmarkEncode	    1000	   1689656 ns/op	  36.69 MB/s

R=nigeltao, minux.ma
CC=golang-dev
https://golang.org/cl/6278050
diff --git a/tiff/writer_test.go b/tiff/writer_test.go
index 1fc2331..4f5ab70 100644
--- a/tiff/writer_test.go
+++ b/tiff/writer_test.go
@@ -6,6 +6,8 @@
 
 import (
 	"bytes"
+	"image"
+	"io/ioutil"
 	"os"
 	"testing"
 )
@@ -15,18 +17,21 @@
 	"bw-packbits.tiff",
 }
 
+func openImage(filename string) (image.Image, error) {
+	f, err := os.Open(testdataDir + filename)
+	if err != nil {
+		return nil, err
+	}
+	defer f.Close()
+	return Decode(f)
+}
+
 func TestRoundtrip(t *testing.T) {
 	for _, filename := range roundtripTests {
-		f, err := os.Open(testdataDir + filename)
+		img, err := openImage(filename)
 		if err != nil {
 			t.Fatal(err)
 		}
-		defer f.Close()
-		img, err := Decode(f)
-		if err != nil {
-			t.Fatal(err)
-		}
-
 		out := new(bytes.Buffer)
 		err = Encode(out, img)
 		if err != nil {
@@ -40,3 +45,17 @@
 		compare(t, img, img2)
 	}
 }
+
+// BenchmarkEncode benchmarks the encoding of an image.
+func BenchmarkEncode(b *testing.B) {
+	img, err := openImage("video-001.tiff")
+	if err != nil {
+		b.Fatal(err)
+	}
+	s := img.Bounds().Size()
+	b.SetBytes(int64(s.X * s.Y * 4))
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		Encode(ioutil.Discard, img)
+	}
+}