Refactor benchmarks
diff --git a/diffmatchpatch/diffmatchpatch_test.go b/diffmatchpatch/diffmatchpatch_test.go
index fe3a715..2398849 100644
--- a/diffmatchpatch/diffmatchpatch_test.go
+++ b/diffmatchpatch/diffmatchpatch_test.go
@@ -81,6 +81,22 @@
 	return text
 }
 
+func readFile(b *testing.B, filename string) string {
+	bytes, err := ioutil.ReadFile(filename)
+	if err != nil {
+		b.Fatal(err)
+	}
+
+	return string(bytes)
+}
+
+func speedtestTexts(b *testing.B) (s1 string, s2 string) {
+	s1 = readFile(b, "../testdata/speedtest1.txt")
+	s2 = readFile(b, "../testdata/speedtest2.txt")
+
+	return s1, s2
+}
+
 func Test_diffCommonPrefix(t *testing.T) {
 	dmp := New()
 	// Detect any common suffix.
@@ -1498,73 +1514,89 @@
 	}
 }
 
-func Benchmark_DiffMain(bench *testing.B) {
-	dmp := New()
-	dmp.DiffTimeout = time.Second
-	a := "`Twas brillig, and the slithy toves\nDid gyre and gimble in the wabe:\nAll mimsy were the borogoves,\nAnd the mome raths outgrabe.\n"
-	b := "I am the very model of a modern major general,\nI've information vegetable, animal, and mineral,\nI know the kings of England, and I quote the fights historical,\nFrom Marathon to Waterloo, in order categorical.\n"
+func BenchmarkDiffMain(bench *testing.B) {
+	s1 := "`Twas brillig, and the slithy toves\nDid gyre and gimble in the wabe:\nAll mimsy were the borogoves,\nAnd the mome raths outgrabe.\n"
+	s2 := "I am the very model of a modern major general,\nI've information vegetable, animal, and mineral,\nI know the kings of England, and I quote the fights historical,\nFrom Marathon to Waterloo, in order categorical.\n"
+
 	// Increase the text lengths by 1024 times to ensure a timeout.
 	for x := 0; x < 10; x++ {
-		a = a + a
-		b = b + b
+		s1 = s1 + s1
+		s2 = s2 + s2
 	}
+
+	dmp := New()
+	dmp.DiffTimeout = time.Second
+
 	bench.ResetTimer()
+
 	for i := 0; i < bench.N; i++ {
-		dmp.DiffMain(a, b, true)
+		dmp.DiffMain(s1, s2, true)
 	}
 }
 
-func Benchmark_DiffCommonPrefix(b *testing.B) {
+func BenchmarkDiffCommonPrefix(b *testing.B) {
+	s := "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
+
 	dmp := New()
-	a := "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
+
 	for i := 0; i < b.N; i++ {
-		dmp.DiffCommonPrefix(a, a)
+		dmp.DiffCommonPrefix(s, s)
 	}
 }
 
-func Benchmark_DiffCommonSuffix(b *testing.B) {
-	dmp := New()
-	a := "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
-	for i := 0; i < b.N; i++ {
-		dmp.DiffCommonSuffix(a, a)
-	}
-}
+func BenchmarkDiffCommonSuffix(b *testing.B) {
+	s := "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
 
-func Benchmark_DiffMainLarge(b *testing.B) {
-	s1 := readFile("../testdata/speedtest1.txt", b)
-	s2 := readFile("../testdata/speedtest2.txt", b)
 	dmp := New()
+
 	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		dmp.DiffCommonSuffix(s, s)
+	}
+}
+
+func BenchmarkDiffMainLarge(b *testing.B) {
+	s1, s2 := speedtestTexts(b)
+
+	dmp := New()
+
+	b.ResetTimer()
+
 	for i := 0; i < b.N; i++ {
 		dmp.DiffMain(s1, s2, true)
 	}
 }
 
-func Benchmark_DiffMainLargeLines(b *testing.B) {
-	s1 := readFile("../testdata/speedtest1.txt", b)
-	s2 := readFile("../testdata/speedtest2.txt", b)
+func BenchmarkDiffMainRunesLargeLines(b *testing.B) {
+	s1, s2 := speedtestTexts(b)
+
 	dmp := New()
+
 	b.ResetTimer()
+
 	for i := 0; i < b.N; i++ {
 		text1, text2, linearray := dmp.DiffLinesToRunes(s1, s2)
+
 		diffs := dmp.DiffMainRunes(text1, text2, false)
 		diffs = dmp.DiffCharsToLines(diffs, linearray)
 	}
 }
 
-func Benchmark_DiffHalfMatch(b *testing.B) {
-	s1 := readFile("../testdata/speedtest1.txt", b)
-	s2 := readFile("../testdata/speedtest2.txt", b)
+func BenchmarkDiffHalfMatch(b *testing.B) {
+	s1, s2 := speedtestTexts(b)
+
 	dmp := New()
+
 	b.ResetTimer()
+
 	for i := 0; i < b.N; i++ {
 		dmp.DiffHalfMatch(s1, s2)
 	}
 }
 
-func Benchmark_DiffCleanupSemantic(b *testing.B) {
-	s1 := readFile("../testdata/speedtest1.txt", b)
-	s2 := readFile("../testdata/speedtest2.txt", b)
+func BenchmarkDiffCleanupSemantic(b *testing.B) {
+	s1, s2 := speedtestTexts(b)
 
 	dmp := New()
 
@@ -1576,11 +1608,3 @@
 		dmp.DiffCleanupSemantic(diffs)
 	}
 }
-
-func readFile(filename string, b *testing.B) string {
-	bytes, err := ioutil.ReadFile(filename)
-	if err != nil {
-		b.Fatal(err)
-	}
-	return string(bytes)
-}