go-ethereum/core
Felix Lange 8d81eb9999 [release/1.4.18] 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

(cherry picked from commit 40cdcf1183)
2016-10-14 19:46:36 +03:00
..
state [release/1.4.18] trie, core/state: improve memory usage and performance (#3135) 2016-10-14 19:46:36 +03:00
types [release/1.4.17] core/types, miner: switch over to the grouped tx sets 2016-10-10 10:49:58 +02:00
vm [release/1.4.16] core/state: rename Delete/IsDeleted to Suicide/HasSuicided 2016-10-06 16:25:17 +02:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
asm.go all: fix go vet warnings 2016-04-15 11:17:27 +02:00
bench_test.go [release/1.4.10] accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-16 14:30:05 +03:00
block_validator.go [release/1.4.10] cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-16 14:30:07 +03:00
block_validator_test.go [release/1.4.10] accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-16 14:30:05 +03:00
blockchain.go [release/1.4.18] trie, core/state: improve memory usage and performance (#3135) 2016-10-14 19:46:36 +03:00
blockchain_test.go [release/1.4.11] core: ensure the canonical block is written before the canonical hash is set 2016-08-18 15:25:16 +02:00
blocks.go remove 0x 2015-08-20 18:50:47 +02:00
chain_makers.go [release/1.4.16] core/state: implement reverts by journaling all changes 2016-10-06 16:25:17 +02:00
chain_makers_test.go [release/1.4.13] core/state: track all accounts in canon state 2016-09-26 10:31:18 +02:00
chain_pow.go core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
chain_pow_test.go [release/1.4.10] accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-16 14:30:05 +03:00
config.go [release/1.4.10] cmd, core, miner: add extradata validation to consensus rules 2016-07-16 14:29:59 +03:00
dao.go [release/1.4.10] cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-16 14:30:07 +03:00
dao_test.go [release/1.4.10] accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-16 14:30:05 +03:00
database_util.go [release/1.4.11] core: ensure the canonical block is written before the canonical hash is set 2016-08-18 15:25:16 +02:00
database_util_test.go [release/1.4.16] tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1 2016-10-06 16:25:17 +02:00
default_genesis.go all: update license information 2016-04-15 09:48:05 +02:00
error.go Merge pull request #1889 from karalabe/fast-sync-rebase 2015-10-21 11:44:22 -07:00
events.go core, miner: add PendingStateEvent to track non-log updates 2016-02-29 11:24:58 +02:00
execution.go [release/1.4.16] core/state: implement reverts by journaling all changes 2016-10-06 16:25:17 +02:00
fees.go Merge pull request #1515 from fjl/license-fixes 2015-07-28 04:29:42 -07:00
filter_test.go all: fix license headers one more time 2015-07-23 18:35:11 +02:00
gaspool.go all: update license information 2016-04-15 09:48:05 +02:00
genesis.go core, eth: added json tag field for proper unmarshalling 2016-04-25 12:48:31 +02:00
headerchain.go [release/1.4.11] core: ensure the canonical block is written before the canonical hash is set 2016-08-18 15:25:16 +02:00
helper_test.go cmd/geth, cmd/utils, core, rpc: renamed to blockchain 2015-10-04 01:13:56 +02:00
state_processor.go [release/1.4.10] cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-16 14:30:07 +03:00
state_transition.go core: transition db now also returns the required gas amount 2016-04-01 01:01:10 +02:00
tx_list.go [release/1.4.17] core: abstract out a sorted transaction hash map 2016-10-10 10:50:02 +02:00
tx_list_test.go [release/1.4.17] core: abstract out a sorted transaction hash map 2016-10-10 10:50:02 +02:00
tx_pool.go [release/1.4.18] core: add global (soft) limits on the pending transactions 2016-10-14 19:46:33 +03:00
tx_pool_test.go [release/1.4.18] core: add global (soft) limits on the pending transactions 2016-10-14 19:46:33 +03:00
types.go all: update license information 2016-04-15 09:48:05 +02:00
vm_env.go [release/1.4.16] core/state: implement reverts by journaling all changes 2016-10-06 16:25:17 +02:00