Add a benchmark

This commit is contained in:
Bjørn Erik Pedersen 2021-05-04 17:45:24 +02:00
parent 64f88f3011
commit b660ea8d54
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F

View file

@ -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)
}
})
}
}
}