From 241a5b3fb210fe902459f59d5b8b6576929c3aee Mon Sep 17 00:00:00 2001 From: Daniel Liu <139250065@qq.com> Date: Wed, 24 Sep 2025 07:59:48 +0800 Subject: [PATCH] all: using testing.B.Loop (#1554) * p2p: using testing.B.Loop * core/state: using testing.B.Loop * eth: using testing.B.Loop * log: using testing.B.Loop * core: using testing.B.Loop * core/vm: using testing.B.Loop * core/types: using testing.B.Loop * crypto: using testing.B.Loop --- core/bench_test.go | 6 ++---- core/state/state_object_test.go | 6 +++--- core/types/block_test.go | 3 +-- core/types/hashing_test.go | 5 ++--- core/vm/contracts_test.go | 4 +--- core/vm/instructions_test.go | 10 +++------- core/vm/runtime/runtime_test.go | 7 ++----- crypto/blake2b/blake2b_test.go | 6 ++---- crypto/crypto_test.go | 2 +- crypto/ecies/ecies_test.go | 8 +++----- crypto/secp256k1/secp256_test.go | 6 +----- crypto/signature_test.go | 6 +++--- .../internal/tracetest/calltrace_test.go | 3 +-- .../internal/tracetest/flat_calltrace_test.go | 2 +- eth/tracers/tracers_test.go | 3 +-- log/format_test.go | 4 ++-- log/logger_test.go | 17 +++++++++-------- p2p/enr/enr_test.go | 3 +-- p2p/netutil/net_test.go | 2 +- 19 files changed, 40 insertions(+), 63 deletions(-) diff --git a/core/bench_test.go b/core/bench_test.go index fdef0fe89b..858b5c93e0 100644 --- a/core/bench_test.go +++ b/core/bench_test.go @@ -245,7 +245,7 @@ func makeChainForBench(db ethdb.Database, full bool, count uint64) { } func benchWriteChain(b *testing.B, full bool, count uint64) { - for i := 0; i < b.N; i++ { + for b.Loop() { dir := b.TempDir() db, err := rawdb.NewLevelDBDatabase(dir, 128, 1024, "", false) if err != nil { @@ -268,9 +268,7 @@ func benchReadChain(b *testing.B, full bool, count uint64) { db.Close() b.ReportAllocs() - b.ResetTimer() - - for i := 0; i < b.N; i++ { + for b.Loop() { db, err := rawdb.NewLevelDBDatabase(dir, 128, 1024, "", false) if err != nil { b.Fatalf("error opening database at %v: %v", dir, err) diff --git a/core/state/state_object_test.go b/core/state/state_object_test.go index 876d4f90d4..e45e0c1c40 100644 --- a/core/state/state_object_test.go +++ b/core/state/state_object_test.go @@ -25,7 +25,7 @@ import ( func BenchmarkCutOriginal(b *testing.B) { value := common.HexToHash("0x01") - for i := 0; i < b.N; i++ { + for b.Loop() { bytes.TrimLeft(value[:], "\x00") } } @@ -33,14 +33,14 @@ func BenchmarkCutOriginal(b *testing.B) { func BenchmarkCutsetterFn(b *testing.B) { value := common.HexToHash("0x01") cutSetFn := func(r rune) bool { return r == 0 } - for i := 0; i < b.N; i++ { + for b.Loop() { bytes.TrimLeftFunc(value[:], cutSetFn) } } func BenchmarkCutCustomTrim(b *testing.B) { value := common.HexToHash("0x01") - for i := 0; i < b.N; i++ { + for b.Loop() { common.TrimLeftZeroes(value[:]) } } diff --git a/core/types/block_test.go b/core/types/block_test.go index 91eabbadba..fd767e4df3 100644 --- a/core/types/block_test.go +++ b/core/types/block_test.go @@ -139,9 +139,8 @@ var benchBuffer = bytes.NewBuffer(make([]byte, 0, 32000)) func BenchmarkEncodeBlock(b *testing.B) { block := makeBenchBlock() - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { benchBuffer.Reset() if err := rlp.Encode(benchBuffer, block); err != nil { b.Fatal(err) diff --git a/core/types/hashing_test.go b/core/types/hashing_test.go index e443d27514..1c522ecfb7 100644 --- a/core/types/hashing_test.go +++ b/core/types/hashing_test.go @@ -67,9 +67,8 @@ func BenchmarkDeriveSha200(b *testing.B) { var exp common.Hash var got common.Hash b.Run("std_trie", func(b *testing.B) { - b.ResetTimer() b.ReportAllocs() - for i := 0; i < b.N; i++ { + for b.Loop() { exp = types.DeriveSha(txs, trie.NewEmpty(trie.NewDatabase(rawdb.NewMemoryDatabase()))) } }) @@ -77,7 +76,7 @@ func BenchmarkDeriveSha200(b *testing.B) { b.Run("stack_trie", func(b *testing.B) { b.ResetTimer() b.ReportAllocs() - for i := 0; i < b.N; i++ { + for b.Loop() { got = types.DeriveSha(txs, trie.NewStackTrie(nil)) } }) diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index 8ca0a9babe..94bee53e57 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -605,12 +605,10 @@ func benchmarkPrecompiled(addr string, test precompiledTest, bench *testing.B) { ) bench.Run(fmt.Sprintf("%s-Gas=%d", test.name, reqGas), func(bench *testing.B) { - bench.ResetTimer() - for i := 0; i < bench.N; i++ { + for bench.Loop() { copy(data, in) res, _, err = RunPrecompiledContract(nil, p, data, reqGas, nil) } - bench.StopTimer() //Check if it is correct if err != nil { bench.Error(err) diff --git a/core/vm/instructions_test.go b/core/vm/instructions_test.go index 8b9356d566..096d83a1e0 100644 --- a/core/vm/instructions_test.go +++ b/core/vm/instructions_test.go @@ -313,15 +313,13 @@ func opBenchmark(bench *testing.B, op executionFunc, args ...string) { intArgs[i] = new(uint256.Int).SetBytes(common.Hex2Bytes(arg)) } pc := uint64(0) - bench.ResetTimer() - for i := 0; i < bench.N; i++ { + for bench.Loop() { for _, arg := range intArgs { stack.push(arg) } op(&pc, evmInterpreter, scope) stack.pop() } - bench.StopTimer() for i, arg := range args { want := new(uint256.Int).SetBytes(common.Hex2Bytes(arg)) @@ -579,8 +577,7 @@ func BenchmarkOpMstore(bench *testing.B) { memStart := new(uint256.Int) value := new(uint256.Int).SetUint64(0x1337) - bench.ResetTimer() - for i := 0; i < bench.N; i++ { + for bench.Loop() { stack.push(value) stack.push(memStart) opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) @@ -642,8 +639,7 @@ func BenchmarkOpKeccak256(bench *testing.B) { pc := uint64(0) start := new(uint256.Int) - bench.ResetTimer() - for i := 0; i < bench.N; i++ { + for bench.Loop() { stack.push(uint256.NewInt(32)) stack.push(start) opKeccak256(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) diff --git a/core/vm/runtime/runtime_test.go b/core/vm/runtime/runtime_test.go index 7ee253e804..13e42af7a2 100644 --- a/core/vm/runtime/runtime_test.go +++ b/core/vm/runtime/runtime_test.go @@ -149,8 +149,7 @@ func BenchmarkCall(b *testing.B) { b.Fatal(err) } - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { for j := 0; j < 400; j++ { Execute(code, cpurchase, nil) Execute(code, creceived, nil) @@ -190,11 +189,9 @@ func benchmarkEVM_Create(bench *testing.B, code string) { EVMConfig: vm.Config{}, } // Warm up the intpools and stuff - bench.ResetTimer() - for i := 0; i < bench.N; i++ { + for bench.Loop() { Call(receiver, []byte{}, &runtimeConfig) } - bench.StopTimer() } func BenchmarkEVM_CREATE_500(bench *testing.B) { diff --git a/crypto/blake2b/blake2b_test.go b/crypto/blake2b/blake2b_test.go index 9d24444a27..8f210445fc 100644 --- a/crypto/blake2b/blake2b_test.go +++ b/crypto/blake2b/blake2b_test.go @@ -303,8 +303,7 @@ func benchmarkSum(b *testing.B, size int, sse4, avx, avx2 bool) { data := make([]byte, size) b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { Sum512(data) } } @@ -319,8 +318,7 @@ func benchmarkWrite(b *testing.B, size int, sse4, avx, avx2 bool) { data := make([]byte, size) h, _ := New512(nil) b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { h.Write(data) } } diff --git a/crypto/crypto_test.go b/crypto/crypto_test.go index d95925883e..ee688e0177 100644 --- a/crypto/crypto_test.go +++ b/crypto/crypto_test.go @@ -59,7 +59,7 @@ func TestToECDSAErrors(t *testing.T) { func BenchmarkSha3(b *testing.B) { a := []byte("hello world") - for i := 0; i < b.N; i++ { + for b.Loop() { Keccak256(a) } } diff --git a/crypto/ecies/ecies_test.go b/crypto/ecies/ecies_test.go index 83c08f3e57..098b9b21b3 100644 --- a/crypto/ecies/ecies_test.go +++ b/crypto/ecies/ecies_test.go @@ -164,7 +164,7 @@ func TestTooBigSharedKey(t *testing.T) { // Benchmark the generation of P256 keys. func BenchmarkGenerateKeyP256(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { if _, err := GenerateKey(rand.Reader, elliptic.P256(), nil); err != nil { b.Fatal(err) } @@ -177,8 +177,7 @@ func BenchmarkGenSharedKeyP256(b *testing.B) { if err != nil { b.Fatal(err) } - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { _, err := prv.GenerateShared(&prv.PublicKey, 16, 16) if err != nil { b.Fatal(err) @@ -192,8 +191,7 @@ func BenchmarkGenSharedKeyS256(b *testing.B) { if err != nil { b.Fatal(err) } - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { _, err := prv.GenerateShared(&prv.PublicKey, 16, 16) if err != nil { b.Fatal(err) diff --git a/crypto/secp256k1/secp256_test.go b/crypto/secp256k1/secp256_test.go index 4827cc5b25..d917c744c0 100644 --- a/crypto/secp256k1/secp256_test.go +++ b/crypto/secp256k1/secp256_test.go @@ -221,9 +221,7 @@ func TestRecoverSanity(t *testing.T) { func BenchmarkSign(b *testing.B) { _, seckey := generateKeyPair() msg := csprngEntropy(32) - b.ResetTimer() - - for i := 0; i < b.N; i++ { + for b.Loop() { Sign(msg, seckey) } } @@ -232,8 +230,6 @@ func BenchmarkRecover(b *testing.B) { msg := csprngEntropy(32) _, seckey := generateKeyPair() sig, _ := Sign(msg, seckey) - b.ResetTimer() - for i := 0; i < b.N; i++ { RecoverPubkey(msg, sig) } diff --git a/crypto/signature_test.go b/crypto/signature_test.go index ce790b1408..6026dd1574 100644 --- a/crypto/signature_test.go +++ b/crypto/signature_test.go @@ -135,7 +135,7 @@ func TestPubkeyRandom(t *testing.T) { } func BenchmarkEcrecoverSignature(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { if _, err := Ecrecover(testmsg, testsig); err != nil { b.Fatal("ecrecover error", err) } @@ -144,7 +144,7 @@ func BenchmarkEcrecoverSignature(b *testing.B) { func BenchmarkVerifySignature(b *testing.B) { sig := testsig[:len(testsig)-1] // remove recovery id - for i := 0; i < b.N; i++ { + for b.Loop() { if !VerifySignature(testpubkey, testmsg, sig) { b.Fatal("verify error") } @@ -152,7 +152,7 @@ func BenchmarkVerifySignature(b *testing.B) { } func BenchmarkDecompressPubkey(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { if _, err := DecompressPubkey(testpubkeyc); err != nil { b.Fatal(err) } diff --git a/eth/tracers/internal/tracetest/calltrace_test.go b/eth/tracers/internal/tracetest/calltrace_test.go index 9e8b311d16..b757f8abd1 100644 --- a/eth/tracers/internal/tracetest/calltrace_test.go +++ b/eth/tracers/internal/tracetest/calltrace_test.go @@ -225,8 +225,7 @@ func benchTracer(tracerName string, test *callTracerTest, b *testing.B) { state := tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc) b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { tracer, err := tracers.DefaultDirectory.New(tracerName, new(tracers.Context), nil, test.Genesis.Config) if err != nil { b.Fatalf("failed to create call tracer: %v", err) diff --git a/eth/tracers/internal/tracetest/flat_calltrace_test.go b/eth/tracers/internal/tracetest/flat_calltrace_test.go index 2983518593..5f567732e6 100644 --- a/eth/tracers/internal/tracetest/flat_calltrace_test.go +++ b/eth/tracers/internal/tracetest/flat_calltrace_test.go @@ -196,7 +196,7 @@ func BenchmarkFlatCallTracer(b *testing.B) { for _, file := range files { filename := strings.TrimPrefix(file, "testdata/call_tracer_flat/") b.Run(camel(strings.TrimSuffix(filename, ".json")), func(b *testing.B) { - for n := 0; n < b.N; n++ { + for b.Loop() { err := flatCallTracerTestRunner("flatCallTracer", filename, "call_tracer_flat", b) if err != nil { b.Fatal(err) diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index 53c1f0aafa..6285a689d0 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -93,10 +93,9 @@ func BenchmarkTransactionTrace(b *testing.B) { if err != nil { b.Fatalf("failed to prepare transaction for tracing: %v", err) } - b.ResetTimer() b.ReportAllocs() - for i := 0; i < b.N; i++ { + for b.Loop() { snap := state.Snapshot() tracer.OnTxStart(evm.GetVMContext(), tx, msg.From) st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) diff --git a/log/format_test.go b/log/format_test.go index d4c1df4abc..bb740ceb84 100644 --- a/log/format_test.go +++ b/log/format_test.go @@ -10,7 +10,7 @@ var sink []byte func BenchmarkPrettyInt64Logfmt(b *testing.B) { buf := make([]byte, 100) b.ReportAllocs() - for i := 0; i < b.N; i++ { + for b.Loop() { sink = appendInt64(buf, rand.Int63()) } } @@ -18,7 +18,7 @@ func BenchmarkPrettyInt64Logfmt(b *testing.B) { func BenchmarkPrettyUint64Logfmt(b *testing.B) { buf := make([]byte, 100) b.ReportAllocs() - for i := 0; i < b.N; i++ { + for b.Loop() { sink = appendUint64(buf, rand.Uint64(), false) } } diff --git a/log/logger_test.go b/log/logger_test.go index 3ec6d2e19c..dae8497204 100644 --- a/log/logger_test.go +++ b/log/logger_test.go @@ -70,9 +70,10 @@ func TestJSONHandler(t *testing.T) { func BenchmarkTraceLogging(b *testing.B) { SetDefault(NewLogger(NewTerminalHandler(io.Discard, true))) - b.ResetTimer() - for i := 0; i < b.N; i++ { + i := 0 + for b.Loop() { Trace("a message", "v", i) + i++ } } @@ -99,8 +100,8 @@ func benchmarkLogger(b *testing.B, l Logger) { err = errors.New("oh nooes it's crap") ) b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { + i := 0 + for b.Loop() { l.Info("This is a message", "foo", int16(i), "bytes", bb, @@ -109,8 +110,8 @@ func benchmarkLogger(b *testing.B, l Logger) { "bigint", bigint, "nilbig", nilbig, "err", err) + i++ } - b.StopTimer() } func TestLoggerOutput(t *testing.T) { @@ -161,18 +162,18 @@ const termTimeFormat = "01-02|15:04:05.000" func BenchmarkAppendFormat(b *testing.B) { var now = time.Now() b.Run("fmt time.Format", func(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { fmt.Fprintf(io.Discard, "%s", now.Format(termTimeFormat)) } }) b.Run("time.AppendFormat", func(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { now.AppendFormat(nil, termTimeFormat) } }) var buf = new(bytes.Buffer) b.Run("time.Custom", func(b *testing.B) { - for i := 0; i < b.N; i++ { + for b.Loop() { writeTimeTermFormat(buf, now) buf.Reset() } diff --git a/p2p/enr/enr_test.go b/p2p/enr/enr_test.go index 41671c8b93..709c333e6f 100644 --- a/p2p/enr/enr_test.go +++ b/p2p/enr/enr_test.go @@ -310,9 +310,8 @@ func TestSignEncodeAndDecodeRandom(t *testing.T) { func BenchmarkDecode(b *testing.B) { var r Record - for i := 0; i < b.N; i++ { + for b.Loop() { rlp.DecodeBytes(pyRecord, &r) } - b.StopTimer() r.NodeAddr() } diff --git a/p2p/netutil/net_test.go b/p2p/netutil/net_test.go index 3a6aa081f2..b3ce141e7b 100644 --- a/p2p/netutil/net_test.go +++ b/p2p/netutil/net_test.go @@ -169,7 +169,7 @@ func TestCheckRelayIP(t *testing.T) { func BenchmarkCheckRelayIP(b *testing.B) { sender := parseIP("23.55.1.242") addr := parseIP("23.55.1.2") - for i := 0; i < b.N; i++ { + for b.Loop() { CheckRelayIP(sender, addr) } }