blob: ea5c7141bfe78e0e6333849436e1addfc4583f7b [file] [log] [blame]
package disruptor
import "testing"
func BenchmarkSingleProducerSequencerPublish(b *testing.B) {
sequencer := NewSingleProducerSequencer(NewSequence(), 1024, &Barrier{})
iterations := int64(b.N)
b.ReportAllocs()
b.ResetTimer()
for i := int64(0); i < iterations; i++ {
sequencer.Publish(i)
}
}
func BenchmarkSingleProducerSequencerNext(b *testing.B) {
consumerSequence := NewSequence()
publisherSequence := NewSequence()
consumerBarrier := NewBarrier(consumerSequence)
sequencer := NewSingleProducerSequencer(publisherSequence, 1024, consumerBarrier)
iterations := int64(b.N)
b.ReportAllocs()
b.ResetTimer()
for i := int64(0); i < iterations; i++ {
claimed := sequencer.Next(1)
consumerSequence.Store(claimed)
}
}
func BenchmarkSingleProducerSequencerNextWrapPoint(b *testing.B) {
consumerSequence := NewSequence()
publisherSequence := NewSequence()
consumerBarrier := NewBarrier(consumerSequence)
sequencer := NewSingleProducerSequencer(publisherSequence, 1024, consumerBarrier)
iterations := int64(b.N)
b.ReportAllocs()
b.ResetTimer()
consumerSequence.Store(MaxSequenceValue)
for i := int64(0); i < iterations; i++ {
sequencer.Next(1)
}
}