@@ -25,12 +25,14 @@ func randStringRunes(n int) string {
25
25
}
26
26
27
27
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 )
31
33
}
32
34
33
- func bench (dirName string , numKeys int , keySize , valSize int ) {
35
+ func throughput (dirName string , numKeys int , keySize , valSize int ) {
34
36
db , err := initDB (dirName )
35
37
if err != nil {
36
38
log .Fatalf ("initialize database failed: %v" , err )
@@ -65,6 +67,35 @@ func bench(dirName string, numKeys int, keySize, valSize int) {
65
67
os .RemoveAll (dirName )
66
68
}
67
69
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
+
68
99
func initDB (dirName string ) (* gobitcask.Bitcask , error ) {
69
100
db , err := gobitcask .New (
70
101
gobitcask .WithDirName (dirName ),
0 commit comments