URI: 
       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)
       +                                }
       +                        })
       +                }
       +        }
       +}