Add a benchmark - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit b660ea8d545d6ba5479dd28a670044d57e5d196f
DIR parent 64f88f3011de5a510d8e6d6bad8ac4a091b11c0c
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Tue, 4 May 2021 17:45:24 +0200
Add a benchmark
Diffstat:
M hugolib/pages_test.go | 38 ++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
---
DIR diff --git a/hugolib/pages_test.go b/hugolib/pages_test.go
@@ -11,17 +11,21 @@ import (
)
func newPagesPrevNextTestSite(t testing.TB, numPages int) *sitesBuilder {
+ categories := []string{"blue", "green", "red", "orange", "indigo", "amber", "lime"}
+ cat1, cat2 := categories[rand.Intn(len(categories))], categories[rand.Intn(len(categories))]
+ categoriesSlice := fmt.Sprintf("[%q,%q]", cat1, cat2)
pageTemplate := `
---
title: "Page %d"
weight: %d
+categories: %s
---
`
b := newTestSitesBuilder(t)
for i := 1; i <= numPages; i++ {
- b.WithContent(fmt.Sprintf("page%d.md", i), fmt.Sprintf(pageTemplate, i, rand.Intn(numPages)))
+ b.WithContent(fmt.Sprintf("page%d.md", i), fmt.Sprintf(pageTemplate, i, rand.Intn(numPages), categoriesSlice))
}
return b
@@ -81,3 +85,35 @@ func BenchmarkPagesPrevNext(b *testing.B) {
}
}
}
+
+func BenchmarkPagePageCollections(b *testing.B) {
+ type Variant struct {
+ name string
+ run func(p page.Page)
+ }
+
+ for _, variant := range []Variant{
+ {".Pages", func(p page.Page) { p.Pages() }},
+ {".RegularPages", func(p page.Page) { p.RegularPages() }},
+ {".RegularPagesRecursive", func(p page.Page) { p.RegularPagesRecursive() }},
+ } {
+ for _, numPages := range []int{300, 5000} {
+ b.Run(fmt.Sprintf("%s-%d", variant.name, numPages), func(b *testing.B) {
+ b.StopTimer()
+ builder := newPagesPrevNextTestSite(b, numPages)
+ builder.Build(BuildCfg{SkipRender: true})
+ var pages page.Pages
+ for _, p := range builder.H.Sites[0].Pages() {
+ if !p.IsPage() {
+ pages = append(pages, p)
+ }
+ }
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ p := pages[rand.Intn(len(pages))]
+ variant.run(p)
+ }
+ })
+ }
+ }
+}