Moved channel and disruptor benchmarks into separate directories.
diff --git a/benchmarks/blocking_channel_test.go b/benchmark-channels/blocking_channel_test.go
similarity index 100%
rename from benchmarks/blocking_channel_test.go
rename to benchmark-channels/blocking_channel_test.go
diff --git a/benchmarks/non_blocking_channel_test.go b/benchmark-channels/non_blocking_channel_test.go
similarity index 100%
rename from benchmarks/non_blocking_channel_test.go
rename to benchmark-channels/non_blocking_channel_test.go
diff --git a/benchmark-disruptor/init_test.go b/benchmark-disruptor/init_test.go
new file mode 100644
index 0000000..8d4945b
--- /dev/null
+++ b/benchmark-disruptor/init_test.go
@@ -0,0 +1,15 @@
+package benchmarks
+
+import "runtime"
+
+const (
+	RingBufferSize   = 1024 * 64
+	RingBufferMask   = RingBufferSize - 1
+	ReserveOne       = 1
+	ReserveMany      = 16
+	ReserveManyDelta = ReserveMany - 1
+)
+
+func init() {
+	runtime.GOMAXPROCS(2)
+}
diff --git a/benchmark-disruptor/single_writer_test.go b/benchmark-disruptor/single_writer_test.go
new file mode 100644
index 0000000..9213392
--- /dev/null
+++ b/benchmark-disruptor/single_writer_test.go
@@ -0,0 +1,67 @@
+package benchmarks
+
+import (
+	"fmt"
+	"testing"
+
+	"github.com/smartystreets/go-disruptor"
+)
+
+func BenchmarkDisruptorWriterReserveSingle(b *testing.B) {
+	ringBuffer := [RingBufferSize]int64{}
+	written, read := disruptor.NewCursor(), disruptor.NewCursor()
+	reader := disruptor.NewReader(read, written, written, Consumer{&ringBuffer})
+	writer := disruptor.NewWriter(written, read, RingBufferSize)
+	reader.Start()
+
+	iterations := int64(b.N)
+	b.ReportAllocs()
+	b.ResetTimer()
+
+	sequence := disruptor.InitialSequenceValue
+	for sequence < iterations {
+		sequence = writer.Reserve(ReserveOne)
+		ringBuffer[sequence&RingBufferMask] = sequence
+		writer.Commit(sequence, sequence)
+	}
+
+	reader.Stop()
+}
+func BenchmarkDisruptorWriterReserveMultiple(b *testing.B) {
+	ringBuffer := [RingBufferSize]int64{}
+	written, read := disruptor.NewCursor(), disruptor.NewCursor()
+	reader := disruptor.NewReader(read, written, written, Consumer{&ringBuffer})
+	writer := disruptor.NewWriter(written, read, RingBufferSize)
+	reader.Start()
+
+	iterations := int64(b.N)
+	b.ReportAllocs()
+	b.ResetTimer()
+
+	sequence := disruptor.InitialSequenceValue
+	for sequence < iterations {
+		sequence = writer.Reserve(ReserveMany)
+
+		for i := sequence - ReserveManyDelta; i <= sequence; i++ {
+			ringBuffer[i&RingBufferMask] = i
+		}
+
+		writer.Commit(sequence, sequence)
+	}
+
+	reader.Stop()
+}
+
+type Consumer struct {
+	ringBuffer *[RingBufferSize]int64
+}
+
+func (this Consumer) Consume(lower, upper int64) {
+	for lower <= upper {
+		message := this.ringBuffer[lower&RingBufferMask]
+		if message != lower {
+			panic(fmt.Sprintf("\nRace condition %d %d\n", lower, message))
+		}
+		lower++
+	}
+}
diff --git a/benchmarks/single_writer_test.go b/benchmarks/single_writer_test.go
deleted file mode 100644
index 9e5eb42..0000000
--- a/benchmarks/single_writer_test.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package benchmarks
-
-import (
-	"fmt"
-	"runtime"
-	"testing"
-
-	"github.com/smartystreets/go-disruptor"
-)
-
-const (
-	singleWriterRingBufferSize = 1024 * 64
-	singleWriterRingBufferMask = singleWriterRingBufferSize - 1
-	reserveOne                 = 1
-	reserveMany                = 16
-	reserveManyDelta           = reserveMany - 1
-)
-
-func BenchmarkDisruptorWriterReserveSingle(b *testing.B) {
-	ringBuffer := [singleWriterRingBufferSize]int64{}
-	written, read := disruptor.NewCursor(), disruptor.NewCursor()
-	reader := disruptor.NewReader(read, written, written, singleWriterConsumer{&ringBuffer})
-	writer := disruptor.NewWriter(written, read, singleWriterRingBufferSize)
-	reader.Start()
-
-	iterations := int64(b.N)
-	b.ReportAllocs()
-	b.ResetTimer()
-
-	sequence := disruptor.InitialSequenceValue
-	for sequence < iterations {
-		sequence = writer.Reserve(reserveOne)
-		ringBuffer[sequence&singleWriterRingBufferMask] = sequence
-		writer.Commit(sequence, sequence)
-	}
-
-	reader.Stop()
-}
-func BenchmarkDisruptorWriterReserveMultiple(b *testing.B) {
-	ringBuffer := [singleWriterRingBufferSize]int64{}
-	written, read := disruptor.NewCursor(), disruptor.NewCursor()
-	reader := disruptor.NewReader(read, written, written, singleWriterConsumer{&ringBuffer})
-	writer := disruptor.NewWriter(written, read, singleWriterRingBufferSize)
-	reader.Start()
-
-	iterations := int64(b.N)
-	b.ReportAllocs()
-	b.ResetTimer()
-
-	sequence := disruptor.InitialSequenceValue
-	for sequence < iterations {
-		sequence = writer.Reserve(reserveMany)
-
-		for i := sequence - reserveManyDelta; i <= sequence; i++ {
-			ringBuffer[i&singleWriterRingBufferMask] = i
-		}
-
-		writer.Commit(sequence, sequence)
-	}
-
-	reader.Stop()
-}
-
-type singleWriterConsumer struct {
-	ringBuffer *[singleWriterRingBufferSize]int64
-}
-
-func (this singleWriterConsumer) Consume(lower, upper int64) {
-	for lower <= upper {
-		message := this.ringBuffer[lower&singleWriterRingBufferMask]
-		if message != lower {
-			panic(fmt.Sprintf("\nRace condition %d %d\n", lower, message))
-		}
-		lower++
-	}
-}
-
-func init() {
-	runtime.GOMAXPROCS(2)
-}