From 5f82cec478c17a1e956e8f634995a2e5b422c9aa Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Wed, 27 Nov 2024 14:28:58 +0100 Subject: [PATCH] eth/tracers: update benchmark The updated benchmark is a lot slower than previously, since previously the json-encoding was deferred to later. Also, storing the data as json-encoded strings is larger than the raw bytes. The BenchmarkTransactionTraceV2 is thus renamed from the original --- eth/tracers/tracers_test.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index ca5b884ab4..13c36379e7 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -23,10 +23,10 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/tests" ) @@ -78,14 +78,8 @@ func BenchmarkTransactionTraceV2(b *testing.B) { state := tests.MakePreState(rawdb.NewMemoryDatabase(), alloc, false, rawdb.HashScheme) defer state.Close() - // Create a tracer which records the number of steps - var steps = 0 - tracer := &tracing.Hooks{ - OnOpcode: func(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, rData []byte, depth int, err error) { - steps++ - }, - } - evm := vm.NewEVM(context, state.StateDB, params.AllEthashProtocolChanges, vm.Config{Tracer: tracer}) + evm := vm.NewEVM(context, state.StateDB, params.AllEthashProtocolChanges, vm.Config{}) + msg, err := core.TransactionToMessage(tx, signer, context.BaseFee) if err != nil { b.Fatalf("failed to prepare transaction for tracing: %v", err) @@ -94,15 +88,15 @@ func BenchmarkTransactionTraceV2(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { + tracer := logger.NewStructLogger(&logger.Config{Debug: false}).Hooks() + tracer.OnTxStart(evm.GetVMContext(), tx, msg.From) + evm.Config.Tracer = tracer + snap := state.StateDB.Snapshot() _, err := core.ApplyMessage(evm, msg, new(core.GasPool).AddGas(tx.Gas())) if err != nil { b.Fatal(err) } state.StateDB.RevertToSnapshot(snap) - if have, want := steps, 244752; have != want { - b.Fatalf("trace wrong, want %d steps, have %d", want, have) - } - steps = 0 } }