File tree Expand file tree Collapse file tree 2 files changed +10
-4
lines changed
Expand file tree Collapse file tree 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -41,7 +41,7 @@ type node struct {
4141 data interface {}
4242}
4343
44- type nodes []* node
44+ type nodes []node
4545
4646// RingBuffer is a MPMC buffer that achieves threadsafety with CAS operations
4747// only. A put on full or get on empty call will block until an item
@@ -64,7 +64,7 @@ func (rb *RingBuffer) init(size uint64) {
6464 size = roundUp (size )
6565 rb .nodes = make (nodes , size )
6666 for i := uint64 (0 ); i < size ; i ++ {
67- rb .nodes [i ] = & node {position : i }
67+ rb .nodes [i ] = node {position : i }
6868 }
6969 rb .mask = size - 1 // so we don't have to do this with every put/get operation
7070}
9393 return false , ErrDisposed
9494 }
9595
96- n = rb .nodes [pos & rb .mask ]
96+ n = & rb .nodes [pos & rb .mask ]
9797 seq := atomic .LoadUint64 (& n .position )
9898 switch dif := seq - pos ; {
9999 case dif == 0 :
146146 return nil , ErrDisposed
147147 }
148148
149- n = rb .nodes [pos & rb .mask ]
149+ n = & rb .nodes [pos & rb .mask ]
150150 seq := atomic .LoadUint64 (& n .position )
151151 switch dif := seq - (pos + 1 ); {
152152 case dif == 0 :
Original file line number Diff line number Diff line change @@ -396,3 +396,9 @@ func BenchmarkRBGet(b *testing.B) {
396396 rb .Get ()
397397 }
398398}
399+
400+ func BenchmarkRBAllocation (b * testing.B ) {
401+ for i := 0 ; i < b .N ; i ++ {
402+ NewRingBuffer (1024 )
403+ }
404+ }
You can’t perform that action at this time.
0 commit comments