forked from cerc-io/plugeth
* core, crypto: various allocation savings regarding tx handling * core: reduce allocs for gas price comparison This change reduces the allocations needed for comparing different transactions to each other. A call to `tx.GasPrice()` copies the gas price as it has to be safe against modifications and also needs to be threadsafe. For comparing and ordering different transactions we don't need these guarantees * core: added tx.GasPriceIntCmp for comparison without allocation adds a method to remove unneeded allocation in comparison to tx.gasPrice * core/types: pool legacykeccak256 objects in rlpHash rlpHash is by far the most used function in core that allocates a legacyKeccak256 object on each call. Since it is so widely used it makes sense to add pooling here so we relieve the GC. On my machine these changes result in > 100 MILLION less allocations and > 30 GB less allocated memory. * reverted some changes * reverted some changes * trie: use crypto.KeccakState instead of replicating code Co-authored-by: Martin Holst Swende <martin@swende.se> |
||
|---|---|---|
| .. | ||
| downloader | ||
| fetcher | ||
| filters | ||
| gasprice | ||
| tracers | ||
| api_backend.go | ||
| api_test.go | ||
| api_tracer.go | ||
| api.go | ||
| backend.go | ||
| bloombits.go | ||
| config.go | ||
| discovery.go | ||
| gen_config.go | ||
| handler_test.go | ||
| handler.go | ||
| helper_test.go | ||
| peer.go | ||
| protocol_test.go | ||
| protocol.go | ||
| sync_test.go | ||
| sync.go | ||