• Martin Holst Swende's avatar
    core/vm: less allocations for various call variants (#21222) · 29569375
    Martin Holst Swende authored
    * core/vm/runtime/tests: add more benchmarks
    
    * core/vm: initial work on improving alloc count for calls to precompiles
    
    name                                  old time/op    new time/op    delta
    SimpleLoop/identity-precompile-10M-6     117ms ±75%      43ms ± 1%  -63.09%  (p=0.008 n=5+5)
    SimpleLoop/loop-10M-6                   79.6ms ± 4%    70.5ms ± 1%  -11.42%  (p=0.008 n=5+5)
    
    name                                  old alloc/op   new alloc/op   delta
    SimpleLoop/identity-precompile-10M-6    24.4MB ± 0%     4.9MB ± 0%  -79.94%  (p=0.008 n=5+5)
    SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 0%     ~     (p=0.357 n=5+5)
    
    name                                  old allocs/op  new allocs/op  delta
    SimpleLoop/identity-precompile-10M-6      382k ± 0%      153k ± 0%  -59.99%  (p=0.000 n=5+4)
    SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
    
    * core/vm: don't allocate big.int for touch
    
    name                                  old time/op    new time/op    delta
    SimpleLoop/identity-precompile-10M-6    43.3ms ± 1%    42.4ms ± 7%     ~     (p=0.151 n=5+5)
    SimpleLoop/loop-10M-6                   70.5ms ± 1%    76.7ms ± 1%   +8.67%  (p=0.008 n=5+5)
    
    name                                  old alloc/op   new alloc/op   delta
    SimpleLoop/identity-precompile-10M-6    4.90MB ± 0%    2.46MB ± 0%  -49.83%  (p=0.008 n=5+5)
    SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 1%     ~     (p=0.571 n=5+5)
    
    name                                  old allocs/op  new allocs/op  delta
    SimpleLoop/identity-precompile-10M-6      153k ± 0%       76k ± 0%  -49.98%  (p=0.029 n=4+4)
    SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
    
    * core/vm: reduce allocs in staticcall
    
    name                                  old time/op    new time/op    delta
    SimpleLoop/identity-precompile-10M-6    42.4ms ± 7%    37.5ms ± 6%  -11.68%  (p=0.008 n=5+5)
    SimpleLoop/loop-10M-6                   76.7ms ± 1%    69.1ms ± 1%   -9.82%  (p=0.008 n=5+5)
    
    name                                  old alloc/op   new alloc/op   delta
    SimpleLoop/identity-precompile-10M-6    2.46MB ± 0%    0.02MB ± 0%  -99.35%  (p=0.008 n=5+5)
    SimpleLoop/loop-10M-6                   13.2kB ± 1%    13.2kB ± 0%     ~     (p=0.143 n=5+5)
    
    name                                  old allocs/op  new allocs/op  delta
    SimpleLoop/identity-precompile-10M-6     76.4k ± 0%      0.1k ± 0%     ~     (p=0.079 n=4+5)
    SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
    
    * trie: better use of hasher keccakState
    
    * core/state/statedb: reduce allocations in getDeletedStateObject
    
    * core/vm: reduce allocations in all call derivates
    
    * core/vm: reduce allocations in call variants
    
    - Make returnstack `uint32`
    - Use a `sync.Pool` of `stack`s
    
    * core/vm: fix tests
    
    * core/vm: goimports
    
    * core/vm: tracer fix + staticcall gas fix
    
    * core/vm: add back snapshot to staticcall
    
    * core/vm: review concerns + make returnstack pooled + enable returndata in traces
    
    * core/vm: fix some test tracer method signatures
    
    * core/vm: run gencodec, minor comment polish
    Co-authored-by: 's avatarPéter Szilágyi <peterke@gmail.com>
    29569375
Name
Last commit
Last update
..
internal Loading commit data...
testdata Loading commit data...
README.md Loading commit data...
compiler.go Loading commit data...
disasm.go Loading commit data...
main.go Loading commit data...
poststate.json Loading commit data...
runner.go Loading commit data...
staterunner.go Loading commit data...
transition-test.sh Loading commit data...