From c1579c907f6c46464ecd629a1f07e89305087a2a Mon Sep 17 00:00:00 2001 From: maskpp Date: Sat, 29 Jun 2024 21:50:17 +0800 Subject: [PATCH] avoid copy the whole slice --- eth/catalyst/queue.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eth/catalyst/queue.go b/eth/catalyst/queue.go index 634dc1b2e6..34a08dfed4 100644 --- a/eth/catalyst/queue.go +++ b/eth/catalyst/queue.go @@ -134,11 +134,11 @@ func (q *headerQueue) put(hash common.Hash, data *types.Header) { q.lock.Lock() defer q.lock.Unlock() - copy(q.headers[1:], q.headers) - q.headers[0] = &headerQueueItem{ + q.headers = append(q.headers, &headerQueueItem{ hash: hash, header: data, - } + }) + q.headers = q.headers[1:] } // get retrieves a previously stored header item or nil if it does not exist. @@ -146,7 +146,8 @@ func (q *headerQueue) get(hash common.Hash) *types.Header { q.lock.RLock() defer q.lock.RUnlock() - for _, item := range q.headers { + for i := len(q.headers) - 1; i >= 0; i-- { + item := q.headers[i] if item == nil { return nil // no more items }