go-pulse/core
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
..
state trie, core/state: improve memory usage and performance (#3135) 2016-10-14 19:04:33 +03:00
types core/types: renamed receiptRoot to receiptsRoot 2016-10-05 12:24:42 +02:00
vm core/state: rename Delete/IsDeleted to Suicide/HasSuicided 2016-10-06 15:32: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 accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
block_validator_test.go accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
block_validator.go cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-15 16:52:55 +03:00
blockchain_test.go core: ensure the canonical block is written before the canonical hash is set 2016-08-16 15:21:22 +02:00
blockchain.go trie, core/state: improve memory usage and performance (#3135) 2016-10-14 19:04:33 +03:00
blocks.go remove 0x 2015-08-20 18:50:47 +02:00
chain_makers_test.go core/state: track all accounts in canon state 2016-09-26 10:09:52 +02:00
chain_makers.go core/state: implement reverts by journaling all changes 2016-10-06 15:32:16 +02:00
chain_pow_test.go accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
chain_pow.go core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
config.go cmd, core, miner: add extradata validation to consensus rules 2016-07-15 16:52:55 +03:00
dao_test.go accounts, core, eth: pass chain config for chain maker to test DAO 2016-07-15 16:52:55 +03:00
dao.go cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-15 16:52:55 +03:00
database_util_test.go tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1 2016-10-06 15:36:21 +02:00
database_util.go core: ensure the canonical block is written before the canonical hash is set 2016-08-16 15:21:22 +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 core/state: implement reverts by journaling all changes 2016-10-06 15:32:16 +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: improved chainDb using sequential keys 2016-06-07 16:38:56 +02:00
headerchain.go core: ensure the canonical block is written before the canonical hash is set 2016-08-16 15:21:22 +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 cmd, core, eth, miner, params, tests: finalize the DAO fork 2016-07-15 16:52:55 +03:00
state_transition.go core: added CheckNonce() to Message interface 2016-07-11 12:35:23 +02:00
tx_list_test.go core: abstract out a sorted transaction hash map 2016-09-02 14:15:40 +03:00
tx_list.go core: abstract out a sorted transaction hash map 2016-09-02 14:15:40 +03:00
tx_pool_test.go core: abstract out a sorted transaction hash map 2016-09-02 14:15:40 +03:00
tx_pool.go core: lower transaction pool max queue limit 2016-10-10 15:32:06 +02:00
types.go core, miner: move Backend to miner 2016-08-17 17:39:04 +02:00
vm_env.go core/state: implement reverts by journaling all changes 2016-10-06 15:32:16 +02:00