Off-by-one error with SharedWriter; 2.5ns/op using SharedWriter reserving many.
diff --git a/benchmark-disruptor/multi_writer_test.go b/benchmark-disruptor/multi_writer_test.go
index a71a941..79fb34c 100644
--- a/benchmark-disruptor/multi_writer_test.go
+++ b/benchmark-disruptor/multi_writer_test.go
@@ -28,6 +28,7 @@
reader.Stop()
}
+// TODO: off by one
// func BenchmarkDisruptorSharedWriterReserveMany(b *testing.B) {
// ringBuffer := [RingBufferSize]int64{}
// written, read := disruptor.NewCursor(), disruptor.NewCursor()
@@ -40,15 +41,16 @@
// b.ReportAllocs()
// b.ResetTimer()
-// sequence := disruptor.InitialSequenceValue
-// for sequence < iterations {
-// sequence = writer.Reserve(ReserveMany)
+// previous, current := disruptor.InitialSequenceValue, disruptor.InitialSequenceValue
+// for current < iterations {
+// current = writer.Reserve(ReserveMany)
-// for i := sequence - ReserveManyDelta; i <= sequence; i++ {
+// for i := previous + 1; i <= current; i++ {
// ringBuffer[i&RingBufferMask] = i
// }
-// writer.Commit(sequence-ReserveMany, sequence)
+// writer.Commit(previous+1, current)
+// previous = current
// }
// reader.Stop()
diff --git a/readme.md b/readme.md
index b8b7294..4583f25 100644
--- a/readme.md
+++ b/readme.md
@@ -20,7 +20,7 @@
Channel (GOMAXPROCS=2): Blocking | 86.6 ns/op
Disruptor: SharedWriter (Reserve One) | 15.4 ns/op
-Disruptor: SharedWriter (Reserve Many) | nn.n ns/op
+Disruptor: SharedWriter (Reserve Many) | 2.5 ns/op
Disruptor: Writer (Reserve One) | 4.3 ns/op
Disruptor: Writer (Reserve Many) | 1.1 ns/op