shithub: hugo

Download patch

ref: f2167de83493f13f02dd622425364668834f8208
parent: 64b6b290751df01c47ff8d8fe21a3eca7a5db283
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Dec 19 15:07:49 EST 2018

parser/pageparser: Add a benchmark

--- a/parser/pageparser/pageparser.go
+++ b/parser/pageparser/pageparser.go
@@ -41,10 +41,13 @@
 	if err != nil {
 		return nil, errors.Wrap(err, "failed to read page content")
 	}
+	return parseBytes(b)
+}
+
+func parseBytes(b []byte) (Result, error) {
 	lexer := newPageLexer(b, 0, lexIntroSection)
 	lexer.run()
 	return lexer, nil
-
 }
 
 func parseMainSection(input []byte, from int) Result {
--- /dev/null
+++ b/parser/pageparser/pageparser_test.go
@@ -1,0 +1,44 @@
+// Copyright 2018 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package pageparser
+
+import (
+	"strings"
+	"testing"
+)
+
+func BenchmarkParse(b *testing.B) {
+	start := `
+	
+
+---
+title: "Front Matters"
+description: "It really does"
+---
+
+This is some summary. This is some summary. This is some summary. This is some summary.
+
+ <!--more-->
+
+
+`
+	input := []byte(start + strings.Repeat(strings.Repeat("this is text", 30)+"{{< myshortcode >}}This is some inner content.{{< /myshortcode >}}", 10))
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		if _, err := parseBytes(input); err != nil {
+			b.Fatal(err)
+		}
+	}
+}