From eb14d1347ee1f4116c324f54504792205d8f3855 Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Thu, 23 Nov 2023 23:57:26 +0800 Subject: [PATCH] chore: refactor ring (#3739) --- core/collection/ring.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/core/collection/ring.go b/core/collection/ring.go index 670efda7..e43379c1 100644 --- a/core/collection/ring.go +++ b/core/collection/ring.go @@ -27,14 +27,13 @@ func (r *Ring) Add(v any) { r.lock.Lock() defer r.lock.Unlock() - ringLength := len(r.elements) - - r.elements[r.index%ringLength] = v + rlen := len(r.elements) + r.elements[r.index%rlen] = v r.index++ // prevent ring index overflow - if r.index/ringLength >= 2 { - r.index = r.index - ringLength + if r.index >= rlen<<1 { + r.index -= rlen } } @@ -45,18 +44,18 @@ func (r *Ring) Take() []any { var size int var start int - ringLength := len(r.elements) + rlen := len(r.elements) - if r.index > ringLength { - size = ringLength - start = r.index % ringLength + if r.index > rlen { + size = rlen + start = r.index % rlen } else { size = r.index } elements := make([]any, size) for i := 0; i < size; i++ { - elements[i] = r.elements[(start+i)%ringLength] + elements[i] = r.elements[(start+i)%rlen] } return elements