ref: 53a5932fa44e915dfa331876de08cd965c54e943
parent: d7588fac21e9bf3a7d1b8d140dacbe93c38fd1d2
	author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
	date: Fri Nov 13 16:21:03 EST 2015
	
Get rid of allocation in the BenchmarkReplaceShortcodeTokens itself So we can see the real numbers. See #1516
--- a/hugolib/shortcode_test.go
+++ b/hugolib/shortcode_test.go
@@ -349,34 +349,47 @@
 func BenchmarkReplaceShortcodeTokens(b *testing.B) {+	type input struct {+ in []byte
+ replacements map[string]string
+ expect []byte
+ }
+
 	data := []struct {input string
replacements map[string]string
-		expect       interface{}+ expect []byte
 	}{-		{"Hello {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "World"}, "Hello World."},-		{strings.Repeat("A", 100) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, strings.Repeat("A", 100) + " Hello World."},-		{strings.Repeat("A", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, strings.Repeat("A", 500) + " Hello World."},-		{strings.Repeat("ABCD ", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, strings.Repeat("ABCD ", 500) + " Hello World."},-		{strings.Repeat("A", 500) + " {@{@HUGOSHORTCODE-1@}@}." + strings.Repeat("BC", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, strings.Repeat("A", 500) + " Hello World." + strings.Repeat("BC", 500) + " Hello World."},+		{"Hello {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "World"}, []byte("Hello World.")},+		{strings.Repeat("A", 100) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, []byte(strings.Repeat("A", 100) + " Hello World.")},+		{strings.Repeat("A", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, []byte(strings.Repeat("A", 500) + " Hello World.")},+		{strings.Repeat("ABCD ", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, []byte(strings.Repeat("ABCD ", 500) + " Hello World.")},+		{strings.Repeat("A", 500) + " {@{@HUGOSHORTCODE-1@}@}." + strings.Repeat("BC", 500) + " {@{@HUGOSHORTCODE-1@}@}.", map[string]string{"{@{@HUGOSHORTCODE-1@}@}": "Hello World"}, []byte(strings.Repeat("A", 500) + " Hello World." + strings.Repeat("BC", 500) + " Hello World.")},}
+
+ var in []input = make([]input, b.N*len(data))
+ var cnt = 0
+	for i := 0; i < b.N; i++ {+		for _, this := range data {+			in[cnt] = input{[]byte(this.input), this.replacements, this.expect}+ cnt++
+ }
+ }
+
b.ResetTimer()
+ cnt = 0
 	for i := 0; i < b.N; i++ {-		for i, this := range data {- results, err := replaceShortcodeTokens([]byte(this.input), "HUGOSHORTCODE", this.replacements)
+		for j := range data {+ currIn := in[cnt]
+ cnt++
+ results, err := replaceShortcodeTokens(currIn.in, "HUGOSHORTCODE", currIn.replacements)
-			if expectSuccess, ok := this.expect.(bool); ok && !expectSuccess {-				if err == nil {-					b.Fatalf("[%d] replaceShortcodeTokens didn't return an expected error", i)- }
-			} else {-				if err != nil {-					b.Fatalf("[%d] failed: %s", i, err)- continue
- }
-				if !reflect.DeepEqual(results, []byte(this.expect.(string))) {-					b.Fatalf("[%d] replaceShortcodeTokens, got \n%q but expected \n%q", i, results, this.expect)- }
+			if err != nil {+				b.Fatalf("[%d] failed: %s", i, err)+ continue
+ }
+			if len(results) != len(currIn.expect) {+				b.Fatalf("[%d] replaceShortcodeTokens, got \n%q but expected \n%q", j, results, currIn.expect)}
}
--
⑨