• Marius van der Wijden's avatar
    core: types: less allocations when hashing and tx handling (#21265) · ddeea1e0
    Marius van der Wijden authored
    * 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: 's avatarMartin Holst Swende <martin@swende.se>
    ddeea1e0
Name
Last commit
Last update
..
committer.go Loading commit data...
database.go Loading commit data...
database_test.go Loading commit data...
encoding.go Loading commit data...
encoding_test.go Loading commit data...
errors.go Loading commit data...
hasher.go Loading commit data...
iterator.go Loading commit data...
iterator_test.go Loading commit data...
node.go Loading commit data...
node_test.go Loading commit data...
proof.go Loading commit data...
proof_test.go Loading commit data...
secure_trie.go Loading commit data...
secure_trie_test.go Loading commit data...
sync.go Loading commit data...
sync_bloom.go Loading commit data...
sync_test.go Loading commit data...
trie.go Loading commit data...
trie_test.go Loading commit data...