From e631e75718e4cd7da80db8550d86eae71b99d0c7 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 13 Dec 2019 19:49:43 +0300 Subject: [PATCH] core: optimize GetVerifiedTransactions() This simple change improves our BenchmarkTXPerformanceTest by 14%, just because we don't waste time on reallocations during append(). Before: 10000 439754 ns/op 218859 B/op 428 allocs/op ok github.com/CityOfZion/neo-go/integration 5.423s After: 10000 369833 ns/op 87209 B/op 412 allocs/op ok github.com/CityOfZion/neo-go/integration 4.612s --- pkg/core/mem_pool.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/core/mem_pool.go b/pkg/core/mem_pool.go index d9e489c0f..a01793a5d 100644 --- a/pkg/core/mem_pool.go +++ b/pkg/core/mem_pool.go @@ -269,12 +269,15 @@ func min(sortedPool PoolItems) *PoolItem { // GetVerifiedTransactions returns a slice of Input from all the transactions in the memory pool // whose hash is not included in excludedHashes. func (mp *MemPool) GetVerifiedTransactions() []*transaction.Transaction { - var t []*transaction.Transaction - mp.lock.RLock() defer mp.lock.RUnlock() + + var t = make([]*transaction.Transaction, len(mp.unsortedTxn)) + var i int + for _, p := range mp.unsortedTxn { - t = append(t, p.txn) + t[i] = p.txn + i++ } return t