Skip to content

Commit 7afd5da

Browse files
authored
refactor: use b.Loop() to simplify the code and improve performance (#4497)
Signed-off-by: dulanting <dulanting@outlook.jp> These changes use b.Loop() to simplify the code and improve performance Supported by Go Team, more info: https://go.dev/blog/testing-b-loop and https://go.dev/issue/73137
1 parent f9dd660 commit 7afd5da

File tree

4 files changed

+23
-33
lines changed

4 files changed

+23
-33
lines changed

pkg/decoders/base64_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func BenchmarkFromChunkSmall(b *testing.B) {
155155
d := Base64{}
156156
data := detectors.MustGetBenchmarkData()["small"]
157157

158-
for n := 0; n < b.N; n++ {
158+
for b.Loop() {
159159
d.FromChunk(&sources.Chunk{Data: data})
160160
}
161161
}
@@ -164,7 +164,7 @@ func BenchmarkFromChunkMedium(b *testing.B) {
164164
d := Base64{}
165165
data := detectors.MustGetBenchmarkData()["medium"]
166166

167-
for n := 0; n < b.N; n++ {
167+
for b.Loop() {
168168
d.FromChunk(&sources.Chunk{Data: data})
169169
}
170170
}
@@ -173,7 +173,7 @@ func BenchmarkFromChunkLarge(b *testing.B) {
173173
d := Base64{}
174174
data := detectors.MustGetBenchmarkData()["big"]
175175

176-
for n := 0; n < b.N; n++ {
176+
for b.Loop() {
177177
d.FromChunk(&sources.Chunk{Data: data})
178178
}
179179
}

pkg/decoders/escaped_unicode_bench_test.go

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -60,49 +60,49 @@ var (
6060

6161
// Benchmark individual decoder functions
6262
func BenchmarkDecodeOriginalEscape(b *testing.B) {
63-
for i := 0; i < b.N; i++ {
63+
for b.Loop() {
6464
_ = decodeEscaped(originalUnicodeData)
6565
}
6666
}
6767

6868
func BenchmarkDecodeCodePoint(b *testing.B) {
69-
for i := 0; i < b.N; i++ {
69+
for b.Loop() {
7070
_ = decodeCodePoint(codePointData)
7171
}
7272
}
7373

7474
func BenchmarkDecodeBraceEscape(b *testing.B) {
75-
for i := 0; i < b.N; i++ {
75+
for b.Loop() {
7676
_ = decodeBraceEscape(braceEscapeData)
7777
}
7878
}
7979

8080
func BenchmarkDecodeLongEscape(b *testing.B) {
81-
for i := 0; i < b.N; i++ {
81+
for b.Loop() {
8282
_ = decodeLongEscape(longEscapeData)
8383
}
8484
}
8585

8686
func BenchmarkDecodePerlEscape(b *testing.B) {
87-
for i := 0; i < b.N; i++ {
87+
for b.Loop() {
8888
_ = decodePerlEscape(perlEscapeData)
8989
}
9090
}
9191

9292
func BenchmarkDecodeCssEscape(b *testing.B) {
93-
for i := 0; i < b.N; i++ {
93+
for b.Loop() {
9494
_ = decodeCssEscape(cssEscapeData)
9595
}
9696
}
9797

9898
func BenchmarkDecodeHtmlEscape(b *testing.B) {
99-
for i := 0; i < b.N; i++ {
99+
for b.Loop() {
100100
_ = decodeHtmlEscape(htmlEscapeData)
101101
}
102102
}
103103

104104
func BenchmarkDecodePercentEscape(b *testing.B) {
105-
for i := 0; i < b.N; i++ {
105+
for b.Loop() {
106106
_ = decodePercentEscape(percentEscapeData)
107107
}
108108
}
@@ -118,8 +118,7 @@ func BenchmarkFromChunk_OriginalFormat(b *testing.B) {
118118
decoder := &EscapedUnicode{}
119119
chunk := &sources.Chunk{Data: originalUnicodeData}
120120

121-
b.ResetTimer()
122-
for i := 0; i < b.N; i++ {
121+
for b.Loop() {
123122
_ = decoder.FromChunk(chunk)
124123
}
125124
}
@@ -128,8 +127,7 @@ func BenchmarkFromChunk_BraceFormat(b *testing.B) {
128127
decoder := &EscapedUnicode{}
129128
chunk := &sources.Chunk{Data: braceEscapeData}
130129

131-
b.ResetTimer()
132-
for i := 0; i < b.N; i++ {
130+
for b.Loop() {
133131
_ = decoder.FromChunk(chunk)
134132
}
135133
}
@@ -138,8 +136,7 @@ func BenchmarkFromChunk_LongFormat(b *testing.B) {
138136
decoder := &EscapedUnicode{}
139137
chunk := &sources.Chunk{Data: longEscapeData}
140138

141-
b.ResetTimer()
142-
for i := 0; i < b.N; i++ {
139+
for b.Loop() {
143140
_ = decoder.FromChunk(chunk)
144141
}
145142
}
@@ -148,8 +145,7 @@ func BenchmarkFromChunk_HtmlFormat(b *testing.B) {
148145
decoder := &EscapedUnicode{}
149146
chunk := &sources.Chunk{Data: htmlEscapeData}
150147

151-
b.ResetTimer()
152-
for i := 0; i < b.N; i++ {
148+
for b.Loop() {
153149
_ = decoder.FromChunk(chunk)
154150
}
155151
}
@@ -158,8 +154,7 @@ func BenchmarkFromChunk_MixedContent(b *testing.B) {
158154
decoder := &EscapedUnicode{}
159155
chunk := &sources.Chunk{Data: mixedContentData}
160156

161-
b.ResetTimer()
162-
for i := 0; i < b.N; i++ {
157+
for b.Loop() {
163158
_ = decoder.FromChunk(chunk)
164159
}
165160
}
@@ -168,8 +163,7 @@ func BenchmarkFromChunk_NoUnicode(b *testing.B) {
168163
decoder := &EscapedUnicode{}
169164
chunk := &sources.Chunk{Data: noUnicodeData}
170165

171-
b.ResetTimer()
172-
for i := 0; i < b.N; i++ {
166+
for b.Loop() {
173167
_ = decoder.FromChunk(chunk)
174168
}
175169
}
@@ -178,8 +172,7 @@ func BenchmarkFromChunk_LargeData(b *testing.B) {
178172
decoder := &EscapedUnicode{}
179173
chunk := &sources.Chunk{Data: largeData}
180174

181-
b.ResetTimer()
182-
for i := 0; i < b.N; i++ {
175+
for b.Loop() {
183176
_ = decoder.FromChunk(chunk)
184177
}
185178
}
@@ -188,8 +181,7 @@ func BenchmarkFromChunk_LargeData(b *testing.B) {
188181
func BenchmarkRegexMatching_AllPatterns(b *testing.B) {
189182
testData := mixedContentData
190183

191-
b.ResetTimer()
192-
for i := 0; i < b.N; i++ {
184+
for b.Loop() {
193185
// Simulate the pattern matching in FromChunk
194186
_ = longEscapePat.Match(testData)
195187
_ = braceEscapePat.Match(testData)
@@ -206,8 +198,7 @@ func BenchmarkRegexMatching_AllPatterns(b *testing.B) {
206198
func BenchmarkRegexMatching_NoMatch(b *testing.B) {
207199
testData := noUnicodeData
208200

209-
b.ResetTimer()
210-
for i := 0; i < b.N; i++ {
201+
for b.Loop() {
211202
// Simulate the pattern matching in FromChunk on data with no matches
212203
_ = longEscapePat.Match(testData)
213204
_ = braceEscapePat.Match(testData)
@@ -226,9 +217,8 @@ func BenchmarkFromChunk_MemoryAllocation(b *testing.B) {
226217
decoder := &EscapedUnicode{}
227218
chunk := &sources.Chunk{Data: mixedContentData}
228219

229-
b.ResetTimer()
230220
b.ReportAllocs()
231-
for i := 0; i < b.N; i++ {
221+
for b.Loop() {
232222
result := decoder.FromChunk(chunk)
233223
if result != nil {
234224
// Prevent compiler optimization

pkg/decoders/utf16_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func BenchmarkUtf16ToUtf8(b *testing.B) {
100100
// Example UTF-16LE encoded data
101101
data := []byte{72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 32, 0, 87, 0, 111, 0, 114, 0, 108, 0, 100, 0}
102102

103-
for n := 0; n < b.N; n++ {
103+
for b.Loop() {
104104
_, _ = utf16ToUTF8(data)
105105
}
106106
}

pkg/decoders/utf8_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ go
375375
away.`)
376376

377377
func Benchmark_extractSubstrings(b *testing.B) {
378-
for i := 0; i < b.N; i++ {
378+
for b.Loop() {
379379
extractSubstrings(testBytes)
380380
}
381381
}

0 commit comments

Comments
 (0)