mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Add a benchmark
This commit is contained in:
parent
64f88f3011
commit
b660ea8d54
1 changed files with 37 additions and 1 deletions
|
@ -11,17 +11,21 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func newPagesPrevNextTestSite(t testing.TB, numPages int) *sitesBuilder {
|
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 := `
|
pageTemplate := `
|
||||||
---
|
---
|
||||||
title: "Page %d"
|
title: "Page %d"
|
||||||
weight: %d
|
weight: %d
|
||||||
|
categories: %s
|
||||||
---
|
---
|
||||||
|
|
||||||
`
|
`
|
||||||
b := newTestSitesBuilder(t)
|
b := newTestSitesBuilder(t)
|
||||||
|
|
||||||
for i := 1; i <= numPages; i++ {
|
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
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue