• 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
tx_list_test.go 2.29 KB