From d0dd205b0ee9517f732ac7436612d234a53a9389 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 20 Nov 2014 11:37:27 -0800 Subject: [PATCH] wal: add a bench for write entry --- wal/wal_bench_test.go | 53 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 wal/wal_bench_test.go diff --git a/wal/wal_bench_test.go b/wal/wal_bench_test.go new file mode 100644 index 000000000..40f4711d5 --- /dev/null +++ b/wal/wal_bench_test.go @@ -0,0 +1,53 @@ +package wal + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/coreos/etcd/raft/raftpb" +) + +func BenchmarkWrite100EntryWithoutBatch(b *testing.B) { benchmarkWriteEntry(b, 100, 0) } +func BenchmarkWrite100EntryBatch10(b *testing.B) { benchmarkWriteEntry(b, 100, 10) } +func BenchmarkWrite100EntryBatch100(b *testing.B) { benchmarkWriteEntry(b, 100, 100) } +func BenchmarkWrite100EntryBatch500(b *testing.B) { benchmarkWriteEntry(b, 100, 500) } +func BenchmarkWrite100EntryBatch1000(b *testing.B) { benchmarkWriteEntry(b, 100, 1000) } + +func BenchmarkWrite1000EntryWithoutBatch(b *testing.B) { benchmarkWriteEntry(b, 1000, 0) } +func BenchmarkWrite1000EntryBatch10(b *testing.B) { benchmarkWriteEntry(b, 1000, 10) } +func BenchmarkWrite1000EntryBatch100(b *testing.B) { benchmarkWriteEntry(b, 1000, 100) } +func BenchmarkWrite1000EntryBatch500(b *testing.B) { benchmarkWriteEntry(b, 1000, 500) } +func BenchmarkWrite1000EntryBatch1000(b *testing.B) { benchmarkWriteEntry(b, 1000, 1000) } + +func benchmarkWriteEntry(b *testing.B, size int, batch int) { + p, err := ioutil.TempDir(os.TempDir(), "waltest") + if err != nil { + b.Fatal(err) + } + defer os.RemoveAll(p) + + w, err := Create(p, []byte("somedata")) + if err != nil { + b.Fatalf("err = %v, want nil", err) + } + data := make([]byte, size) + for i := 0; i < len(data); i++ { + data[i] = byte(i) + } + e := &raftpb.Entry{Data: data} + + b.ResetTimer() + n := 0 + for i := 0; i < b.N; i++ { + err := w.SaveEntry(e) + if err != nil { + b.Fatal(err) + } + n++ + if n > batch { + w.sync() + n = 0 + } + } +}