mirror of
https://github.com/kaspanet/kaspad.git
synced 2026-02-26 13:15:47 +00:00
This modifies calcSignatureHash to use a shallow copy of the transaction versus a deep copy since the actual scripts themselves are not modified and therefore don't need to be copied. This is being done because profiling the most overall allocated space shows that the deep copy performed in calcSignatureHash accounts for nearly 20% of all allocations on a synced running instance. Also, copying all of the additional data makes it more time consuming as well. With this change, that figure drops from ~20% to ~5% of all allocations. The following benchmark shows the relative speedups and allocation reduction as a result of the optimization on my system. In particular, the changes result in approximately a 15% speedup and a whopping 99.89% reduction in allocations when using a large transaction with thousands of inputs which was the worst case scenario. benchmark old allocs new allocs delta -------------------------------------------------------------------- BenchmarkCalcSignatureHash 11151 12 -99.89% benchmark old ns/op new ns/op delta -------------------------------------------------------------------- BenchmarkCalcSignatureHash 3599845 3056359 -15.10%
28 KiB
28 KiB