From dee396ba831507b8b347291a4f97505d4a6bdc1e Mon Sep 17 00:00:00 2001 From: Jammy Arkens <158516297+jaramyweb3@users.noreply.github.com> Date: Sat, 11 Oct 2025 07:55:57 +0800 Subject: [PATCH] refactor: use b.Loop() in benchmark tests for better performance (#25426) Co-authored-by: Alex | Cosmos Labs --- log/bench_test.go | 10 +++++----- store/cachekv/store_test.go | 12 ++++++++---- x/genutil/types/chain_id_test.go | 4 ++-- x/tx/signing/aminojson/bench_test.go | 2 +- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/log/bench_test.go b/log/bench_test.go index c5ba081233..fb766d6395 100644 --- a/log/bench_test.go +++ b/log/bench_test.go @@ -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) diff --git a/store/cachekv/store_test.go b/store/cachekv/store_test.go index 71dc4272d8..f2c63e4b9c 100644 --- a/store/cachekv/store_test.go +++ b/store/cachekv/store_test.go @@ -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++ } } diff --git a/x/genutil/types/chain_id_test.go b/x/genutil/types/chain_id_test.go index 46441e820a..7cf1beb52e 100644 --- a/x/genutil/types/chain_id_test.go +++ b/x/genutil/types/chain_id_test.go @@ -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) diff --git a/x/tx/signing/aminojson/bench_test.go b/x/tx/signing/aminojson/bench_test.go index 49f9302d4b..4793d1accb 100644 --- a/x/tx/signing/aminojson/bench_test.go +++ b/x/tx/signing/aminojson/bench_test.go @@ -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 {