forked from cerc-io/laconicd-deprecated
* x/evm/keeper: save 24B with Go in-condition variable idiom The prior code doubly invoked (*ethereum/go-ethereum/core/types.Transaction).To() which is quite expensive, and firstly copies 20 bytes each time, then that gets rounded up to the proper size class/pointer alignment so on 64-bit machines 20B -> 24B. Isolating a benchmark for this code per issue #826 shows this saves quite a bit of bytes and some nano seconds which all count up towards the transactions per seconds being processed: ```shell $ benchstat before.txt after.txt name old time/op new time/op delta CopyAddr-8 38.4ns ± 3% 19.3ns ± 3% -49.66% (p=0.000 n=10+10) name old alloc/op new alloc/op delta CopyAddr-8 48.0B ± 0% 24.0B ± 0% -50.00% (p=0.000 n=10+10) name old allocs/op new allocs/op delta CopyAddr-8 2.00 ± 0% 1.00 ± 0% -50.00% (p=0.000 n=10+10) ``` Fixes #826 * changelog * lint * Revert stray changes that were used in testing * rm log Co-authored-by: Federico Kunze Küllmer <federico.kunze94@gmail.com> |
||
|---|---|---|
| .. | ||
| abci.go | ||
| benchmark_test.go | ||
| context_stack.go | ||
| grpc_query_test.go | ||
| grpc_query.go | ||
| hooks_test.go | ||
| hooks.go | ||
| keeper_test.go | ||
| keeper.go | ||
| migrations.go | ||
| msg_server.go | ||
| params_test.go | ||
| params.go | ||
| state_transition_benchmark_test.go | ||
| state_transition_test.go | ||
| state_transition.go | ||
| statedb_benchmark_test.go | ||
| statedb_test.go | ||
| statedb.go | ||
| utils_test.go | ||
| utils.go | ||