...
1
2
3
4
5
6
7 package memdb
8
9 import (
10 "encoding/binary"
11 "math/rand"
12 "testing"
13
14 "github.com/syndtr/goleveldb/leveldb/comparer"
15 )
16
17 func BenchmarkPut(b *testing.B) {
18 buf := make([][4]byte, b.N)
19 for i := range buf {
20 binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
21 }
22
23 b.ResetTimer()
24 p := New(comparer.DefaultComparer, 0)
25 for i := range buf {
26 if err := p.Put(buf[i][:], nil); err != nil {
27 b.Fatal(err)
28 }
29 }
30 }
31
32 func BenchmarkPutRandom(b *testing.B) {
33 buf := make([][4]byte, b.N)
34 for i := range buf {
35 binary.LittleEndian.PutUint32(buf[i][:], uint32(rand.Int()))
36 }
37
38 b.ResetTimer()
39 p := New(comparer.DefaultComparer, 0)
40 for i := range buf {
41 if err := p.Put(buf[i][:], nil); err != nil {
42 b.Fatal(err)
43 }
44 }
45 }
46
47 func BenchmarkGet(b *testing.B) {
48 buf := make([][4]byte, b.N)
49 for i := range buf {
50 binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
51 }
52
53 p := New(comparer.DefaultComparer, 0)
54 for i := range buf {
55 if err := p.Put(buf[i][:], nil); err != nil {
56 b.Fatal(err)
57 }
58 }
59
60 b.ResetTimer()
61 for i := range buf {
62 if _, err := p.Get(buf[i][:]); err != nil {
63 b.Fatal(err)
64 }
65 }
66 }
67
68 func BenchmarkGetRandom(b *testing.B) {
69 buf := make([][4]byte, b.N)
70 for i := range buf {
71 binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
72 }
73
74 p := New(comparer.DefaultComparer, 0)
75 for i := range buf {
76 if err := p.Put(buf[i][:], nil); err != nil {
77 b.Fatal(err)
78 }
79 }
80
81 b.ResetTimer()
82 for i := 0; i < b.N; i++ {
83 if _, err := p.Get(buf[rand.Int()%b.N][:]); err != nil {
84 b.Fatal(err)
85 }
86 }
87 }
88
View as plain text