refactor: use b.Loop() in benchmark tests for better performance (#25426)

Co-authored-by: Alex | Cosmos Labs <alex@cosmoslabs.io>
This commit is contained in:
Jammy Arkens 2025-10-11 07:55:57 +08:00 committed by GitHub
parent d3b1e32fea
commit dee396ba83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 12 deletions

View File

@ -87,7 +87,7 @@ func BenchmarkLoggers(b *testing.B) {
zl := zerolog.New(io.Discard)
logger := log.NewCustomLogger(zl)
for i := 0; i < b.N; i++ {
for b.Loop() {
logger.Info(message, bc.keyVals...)
}
})
@ -101,7 +101,7 @@ func BenchmarkLoggers(b *testing.B) {
b.Run(bc.name, func(b *testing.B) {
logger := log.NewNopLogger()
for i := 0; i < b.N; i++ {
for b.Loop() {
logger.Info(message, bc.keyVals...)
}
})
@ -116,7 +116,7 @@ func BenchmarkLoggers(b *testing.B) {
b.Run(bc.name, func(b *testing.B) {
logger := log.NewCustomLogger(zerolog.Nop())
for i := 0; i < b.N; i++ {
for b.Loop() {
logger.Info(message, bc.keyVals...)
}
})
@ -134,7 +134,7 @@ func BenchmarkLoggers_StructuredVsFields(b *testing.B) {
zl := zerolog.New(io.Discard)
logger := log.NewCustomLogger(zl)
zerolog := logger.Impl().(*zerolog.Logger)
for i := 0; i < b.N; i++ {
for b.Loop() {
zerolog.Info().Int64("foo", 100000).Msg(message)
zerolog.Info().Str("foo", "foo").Msg(message)
zerolog.Error().
@ -149,7 +149,7 @@ func BenchmarkLoggers_StructuredVsFields(b *testing.B) {
b.Run("logger", func(b *testing.B) {
zl := zerolog.New(io.Discard)
logger := log.NewCustomLogger(zl)
for i := 0; i < b.N; i++ {
for b.Loop() {
logger.Info(message, "foo", 100000)
logger.Info(message, "foo", "foo")
logger.Error(message, "foo", 100000, "bar", "foo", "other", byteSliceToLog, "error", errorToLog)

View File

@ -674,8 +674,10 @@ func BenchmarkCacheKVStoreGetNoKeyFound(b *testing.B) {
st := newCacheKVStore()
b.ResetTimer()
// assumes b.N < 2**24
for i := 0; i < b.N; i++ {
st.Get([]byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)})
idx := 0
for b.Loop() {
st.Get([]byte{byte((idx & 0xFF0000) >> 16), byte((idx & 0xFF00) >> 8), byte(idx & 0xFF)})
idx++
}
}
@ -688,7 +690,9 @@ func BenchmarkCacheKVStoreGetKeyFound(b *testing.B) {
}
b.ResetTimer()
// assumes b.N < 2**24
for i := 0; i < b.N; i++ {
st.Get([]byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)})
idx := 0
for b.Loop() {
st.Get([]byte{byte((idx & 0xFF0000) >> 16), byte((idx & 0xFF00) >> 8), byte(idx & 0xFF)})
idx++
}
}

View File

@ -112,7 +112,7 @@ func BenchmarkParseChainID(b *testing.B) {
b.ReportAllocs()
b.Run("new", func(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
for b.Loop() {
chainID, err := types.ParseChainIDFromGenesis(strings.NewReader(BenchmarkGenesis))
require.NoError(b, err)
require.Equal(b, expChainID, chainID)
@ -121,7 +121,7 @@ func BenchmarkParseChainID(b *testing.B) {
b.Run("old", func(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
for b.Loop() {
doc, err := types.AppGenesisFromReader(strings.NewReader(BenchmarkGenesis))
require.NoError(b, err)
require.Equal(b, expChainID, doc.ChainID)

View File

@ -45,7 +45,7 @@ func benchmarkAminoJSON(b *testing.B, addNaiveSort bool) {
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
for b.Loop() {
sink = runAminoJSON(b, enc, addNaiveSort)
}
if sink == nil {