From 37370f057f5f39a54316bc7a048ab12b35004b7c Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Tue, 1 Aug 2017 03:39:57 +0900 Subject: Do not use defer in performance-sensitive contexts --- src/chunklist.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/chunklist.go') diff --git a/src/chunklist.go b/src/chunklist.go index f6bedcc5..63c60786 100644 --- a/src/chunklist.go +++ b/src/chunklist.go @@ -55,7 +55,6 @@ func CountItems(cs []*Chunk) int { // Push adds the item to the list func (cl *ChunkList) Push(data []byte) bool { cl.mutex.Lock() - defer cl.mutex.Unlock() if len(cl.chunks) == 0 || cl.lastChunk().IsFull() { newChunk := Chunk(make([]Item, 0, chunkSize)) @@ -64,15 +63,16 @@ func (cl *ChunkList) Push(data []byte) bool { if cl.lastChunk().push(cl.trans, data, cl.count) { cl.count++ + cl.mutex.Unlock() return true } + cl.mutex.Unlock() return false } // Snapshot returns immutable snapshot of the ChunkList func (cl *ChunkList) Snapshot() ([]*Chunk, int) { cl.mutex.Lock() - defer cl.mutex.Unlock() ret := make([]*Chunk, len(cl.chunks)) copy(ret, cl.chunks) @@ -82,5 +82,7 @@ func (cl *ChunkList) Snapshot() ([]*Chunk, int) { newChunk := *ret[cnt-1] ret[cnt-1] = &newChunk } + + cl.mutex.Unlock() return ret, cl.count } -- cgit v1.2.3