• Felix Lange's avatar
    trie, core/state: improve memory usage and performance (#3135) · 40cdcf11
    Felix Lange authored
    * trie: store nodes as pointers
    
    This avoids memory copies when unwrapping node interface values.
    
    name      old time/op  new time/op  delta
    Get        388ns ± 8%   215ns ± 2%  -44.56%  (p=0.000 n=15+15)
    GetDB      363ns ± 3%   202ns ± 2%  -44.21%  (p=0.000 n=15+15)
    UpdateBE  1.57µs ± 2%  1.29µs ± 3%  -17.80%  (p=0.000 n=13+15)
    UpdateLE  1.92µs ± 2%  1.61µs ± 2%  -16.25%  (p=0.000 n=14+14)
    HashBE    2.16µs ± 6%  2.18µs ± 6%     ~     (p=0.436 n=15+15)
    HashLE    7.43µs ± 3%  7.21µs ± 3%   -2.96%  (p=0.000 n=15+13)
    
    * trie: close temporary databases in GetDB benchmark
    
    * trie: don't keep []byte from DB load around
    
    Nodes decoded from a DB load kept hashes and values as sub-slices of
    the DB value. This can be a problem because loading from leveldb often
    returns []byte with a cap that's larger than necessary, increasing
    memory usage.
    
    * trie: unload old cached nodes
    
    * trie, core/state: use cache unloading for account trie
    
    * trie: use explicit private flags (fixes Go 1.5 reflection issue).
    
    * trie: fixup cachegen overflow at request of nick
    
    * core/state: rename journal size constant
    40cdcf11
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
_data Loading commit data...
accounts Loading commit data...
build Loading commit data...
cmd Loading commit data...
common Loading commit data...
compression/rle Loading commit data...
console Loading commit data...
containers Loading commit data...
contracts Loading commit data...
core Loading commit data...
crypto Loading commit data...
errs Loading commit data...
eth Loading commit data...
ethclient Loading commit data...
ethdb Loading commit data...
event Loading commit data...
generators Loading commit data...
internal Loading commit data...
light Loading commit data...
logger Loading commit data...
metrics Loading commit data...
miner Loading commit data...
node Loading commit data...
p2p Loading commit data...
params Loading commit data...
pow Loading commit data...
rlp Loading commit data...
rpc Loading commit data...
swarm Loading commit data...
tests Loading commit data...
trie Loading commit data...
whisper Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
VERSION Loading commit data...
appveyor.yml Loading commit data...
circle.yml Loading commit data...
interfaces.go Loading commit data...