Skip to content

Commit a5d9560

Browse files
author
Tam Le
committed
feat: add latency benchmark
1 parent 9c7cd07 commit a5d9560

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

benchmark/main.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ func randStringRunes(n int) string {
2525
}
2626

2727
func main() {
28-
bench("./test", 1_000_000, 8, 128)
29-
bench("./test", 1_000_000, 16, 512)
30-
bench("./test", 10_000_000, 8, 128)
28+
throughput("./test", 1_000_000, 8, 128)
29+
throughput("./test", 1_000_000, 16, 512)
30+
throughput("./test", 10_000_000, 8, 128)
31+
32+
latency("./test", 8, 128)
3133
}
3234

33-
func bench(dirName string, numKeys int, keySize, valSize int) {
35+
func throughput(dirName string, numKeys int, keySize, valSize int) {
3436
db, err := initDB(dirName)
3537
if err != nil {
3638
log.Fatalf("initialize database failed: %v", err)
@@ -65,6 +67,35 @@ func bench(dirName string, numKeys int, keySize, valSize int) {
6567
os.RemoveAll(dirName)
6668
}
6769

70+
func latency(dirName string, keySize, valSize int) {
71+
db, err := initDB(dirName)
72+
if err != nil {
73+
log.Fatalf("initialize database failed: %v", err)
74+
}
75+
defer db.Close()
76+
77+
now := time.Now()
78+
79+
key := []byte(randStringRunes(keySize))
80+
val := []byte(randStringRunes(valSize))
81+
err = db.Put(key, val)
82+
if err != nil {
83+
log.Fatalf("put failed: %v", err)
84+
}
85+
86+
fmt.Printf("Put one key/value pair takes: %v\n", time.Since(now).String())
87+
88+
now = time.Now()
89+
_, err = db.Get(key)
90+
if err != nil {
91+
log.Fatalf("get failed: %v", err)
92+
}
93+
94+
fmt.Printf("Get one key/value pair takes: %v\n", time.Since(now).String())
95+
96+
os.RemoveAll(dirName)
97+
}
98+
6899
func initDB(dirName string) (*gobitcask.Bitcask, error) {
69100
db, err := gobitcask.New(
70101
gobitcask.WithDirName(dirName),

0 commit comments

Comments
 (0)