go-ethereum/eth
Felix Lange 40cdcf1183 trie, core/state: improve memory usage and performance (#3135)
* 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
2016-10-14 19:04:33 +03:00
..
downloader trie, core/state: improve memory usage and performance (#3135) 2016-10-14 19:04:33 +03:00
fetcher eth/fetcher: small typo fix (#2932) 2016-08-23 18:23:34 +03:00
filters rpc: refactor subscriptions and filters 2016-08-17 12:59:58 +02:00
gasprice eth: separate common and full node-specific API and backend service 2016-06-16 17:36:38 +02:00
api_backend.go core/state: implement reverts by journaling all changes 2016-10-06 15:32:16 +02:00
api.go core, eth, trie: reuse trie journals in all our code 2016-09-28 11:27:31 +03:00
backend_test.go accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
backend.go cmd, eth: drop the blockchain version from cli/eth configs 2016-09-15 14:09:47 +03:00
bad_block.go eth: enable bad block reports 2016-05-25 02:02:51 +02:00
bind.go accounts/abi/bind: use ethereum interfaces 2016-08-22 14:01:28 +02:00
cpu_mining.go cmd, common, console, eth, release: drop redundant "full"s 2016-06-30 13:03:26 +03:00
db_upgrade.go eth: fixed chaindb upgrade 2016-07-19 14:32:38 +02:00
gpu_mining.go cmd, common, console, eth, release: drop redundant "full"s 2016-06-30 13:03:26 +03:00
handler_test.go eth: monitor malicious header retrieval requests 2016-10-05 16:34:07 +03:00
handler.go eth: move "timed out DAO fork check, dropping" to debug level 2016-10-07 21:03:38 +02:00
helper_test.go core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00
metrics.go eth, eth/downloader, eth/fetcher: delete eth/61 code 2016-07-22 13:17:19 +02:00
peer.go eth, eth/downloader: better remote head tracking 2016-07-25 15:14:14 +03:00
protocol_test.go core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00
protocol.go core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00
sync_test.go eth: skip transaction handling during fast sync 2016-05-17 14:17:20 +03:00
sync.go core, eth, internal, miner: optimize txpool for quick ops 2016-09-02 14:12:03 +03:00