Skip to content

Instantly share code, notes, and snippets.

@briansorahan
Last active August 23, 2019 16:38
Show Gist options
  • Save briansorahan/47ff8c753fa18add8b788ce2fdab0bcd to your computer and use it in GitHub Desktop.
Save briansorahan/47ff8c753fa18add8b788ce2fdab0bcd to your computer and use it in GitHub Desktop.
Quick test for buntdb
package main
import (
"log"
"time"
"github.com/tidwall/buntdb"
gen "github.com/Pallinder/go-randomdata"
)
var m = map[string]string{}
var config = buntdb.Config{
SyncPolicy: buntdb.Always,
AutoShrinkPercentage: 100,
AutoShrinkMinSize: 32 * 1024 * 1024,
}
func main() {
db, err := buntdb.Open("bunttest")
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err := db.SetConfig(config); err != nil {
log.Fatal(err)
}
start := time.Now()
var i int
for i < 1e6 {
if err := db.Update(withRandomKV); err != nil {
log.Fatal(err)
}
i++
}
log.Printf("%s to write 1M key/value pairs\n", time.Now().Sub(start))
start = time.Now()
for k := range m {
if err := db.View(get(k)); err != nil {
log.Fatal(err)
}
}
log.Printf("%s for 1M point lookups\n", time.Now().Sub(start))
}
func get(k string) func(tx *buntdb.Tx) error {
return func(tx *buntdb.Tx) error {
_, err := tx.Get(k)
return err
}
}
func withRandomKV(tx *buntdb.Tx) error {
var (
k = gen.RandStringRunes(32)
v = gen.RandStringRunes(1024)
)
_, _, err := tx.Set(k, v, nil)
if err == nil {
m[k] = v
}
return err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment