all: Fix some benchmarks broken by modernize

It's not possible to use `b.Loop()` when `b.N` is used to prepare test data.

See 264022a75a
See #14107
This commit is contained in:
Bjørn Erik Pedersen
2025-11-06 10:43:12 +01:00
parent 04650ce778
commit 91eac9e573
16 changed files with 24 additions and 26 deletions

View File

@@ -161,7 +161,7 @@ func BenchmarkIsContextType(b *testing.B) {
}
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
if !IsContextType(ctxs[i]) {
b.Fatal("not context")
}

View File

@@ -105,13 +105,13 @@ func BenchmarkUniqueStrings(b *testing.B) {
b.Run("Reuse slice sorted", func(b *testing.B) {
b.StopTimer()
inputs := make([][]string, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
inputc := make([]string, len(input))
copy(inputc, input)
inputs[i] = inputc
}
b.StartTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
inputc := inputs[i]
result := UniqueStringsSorted(inputc)

View File

@@ -67,12 +67,12 @@ func BenchmarkStringSort(b *testing.B) {
prototype := []string{"b", "Bz", "zz", "ba", "αβδ αβδ αβδ", "A", "Ba", "ba", "nnnnasdfnnn", "AAgæåz", "αβδC"}
b.Run("LessStrings", func(b *testing.B) {
ss := make([][]string, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
ss[i] = make([]string, len(prototype))
copy(ss[i], prototype)
}
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
sss := ss[i]
sort.Slice(sss, func(i, j int) bool {
return LessStrings(sss[i], sss[j])

View File

@@ -83,7 +83,7 @@ kind = '{section,term}'
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
})

View File

@@ -749,7 +749,7 @@ func BenchmarkBaseline(b *testing.B) {
builders[i] = NewIntegrationTestBuilder(cfg)
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}

View File

@@ -61,7 +61,7 @@ func BenchmarkGetPage(b *testing.B) {
pagePaths[i] = fmt.Sprintf("sect%d", r.Intn(10))
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
home, _ := s.getPage(nil, "/")
if home == nil {
b.Fatal("Home is nil")
@@ -120,12 +120,12 @@ func BenchmarkGetPageRegular(b *testing.B) {
pagePaths := make([]string, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
pagePaths[i] = path.Join(fmt.Sprintf("/sect%d", r.Intn(10)), fmt.Sprintf("page%d.md", r.Intn(100)))
}
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
page, _ := s.getPage(nil, pagePaths[i])
c.Assert(page, qt.Not(qt.IsNil))
}
@@ -139,13 +139,13 @@ func BenchmarkGetPageRegular(b *testing.B) {
pagePaths := make([]string, b.N)
pages := make([]page.Page, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
pagePaths[i] = fmt.Sprintf("page%d.md", r.Intn(100))
pages[i] = allPages[r.Intn(len(allPages)/3)]
}
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
page, _ := s.getPage(pages[i], pagePaths[i])
c.Assert(page, qt.Not(qt.IsNil))
}

View File

@@ -1797,7 +1797,7 @@ func BenchmarkRebuildContentFileChange(b *testing.B) {
builders[i].Build()
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
bb := builders[i]
bb.EditFileReplaceFunc("content/mysect/p123/index.md", func(s string) string {
return s + "... Edited"

View File

@@ -100,7 +100,6 @@ title: "Shortcodes Galore!"
{"closed without content", `{{< inner param1 >}}{{< / inner >}}`, regexpCheck("inner.*inner:{}")},
{"inline", `{{< my.inline >}}Hi{{< /my.inline >}}`, regexpCheck("my.inline;inline:true;closing:true;inner:{Hi};")},
} {
t.Run(test.name, func(t *testing.T) {
t.Parallel()
c := qt.New(t)
@@ -342,7 +341,7 @@ title: "Markdown Shortcode"
builders[i] = NewIntegrationTestBuilder(cfg)
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}
@@ -715,7 +714,6 @@ TOC: {{ .TableOfContents }}
)
}
})
}
}

View File

@@ -504,7 +504,7 @@ func BenchmarkSiteNew(b *testing.B) {
}
b.Run(name, func(b *testing.B) {
sites := make([]*sitesBuilder, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
sites[i] = bm.create(b)
if edit {
sites[i].Running()

View File

@@ -1125,11 +1125,11 @@ func BenchmarkSitesMatrixContent(b *testing.B) {
for _, multipleDimensions := range []bool{false, true} {
b.Run(fmt.Sprintf("n%d/md%t", numPages, multipleDimensions), func(b *testing.B) {
builders := make([]*hugolib.IntegrationTestBuilder, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i] = newSitesMatrixContentBenchmarkBuilder(b, numPages, true, true)
}
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
})

View File

@@ -46,7 +46,7 @@ func BenchmarkIdentityManager(b *testing.B) {
im := identity.NewManager()
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
im.AddIdentity(ids[i])
}

View File

@@ -284,7 +284,7 @@ D.
builders[i] = hugolib.NewIntegrationTestBuilder(cfg)
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}
@@ -343,7 +343,7 @@ FENCE
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}

View File

@@ -218,7 +218,7 @@ func BenchmarkToc(b *testing.B) {
b.Run("ToHTML", func(b *testing.B) {
tocs := newTocs(b.N)
b.ResetTimer()
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
toc := tocs[i]
toc.ToHTML(1, -1, false)
}

View File

@@ -181,7 +181,7 @@ keywords: ['k%d']
builders[i] = hugolib.NewIntegrationTestBuilder(cfg)
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}

View File

@@ -469,7 +469,7 @@ func BenchmarkImageExif(b *testing.B) {
getImages := func(c *qt.C, b *testing.B, fs afero.Fs) []images.ImageResource {
spec := newTestResourceSpec(specDescriptor{fs: fs, c: c})
imgs := make([]images.ImageResource, b.N)
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
imgs[i] = fetchResourceForSpec(spec, c, "sunset.jpg", strconv.Itoa(i)).(images.ImageResource)
}
return imgs

View File

@@ -243,7 +243,7 @@ ABCDE
builders[i] = hugolib.NewIntegrationTestBuilder(cfg)
}
for i := 0; b.Loop(); i++ {
for i := 0; i < b.N; i++ {
builders[i].Build()
}
}