Hi
I am trying to benchmark a key-value store written in Go. I have the code
as shown below. There are a few lines that are specific to the store
itself, other than that it is all related to benchmarking. I am trying to
find the no. of keys that have valid values versus the no. of keys that
dont have values.
Running the code below as
go test -v --bench BenchmarkReadRandomBadger --timeout 10m --benchtime 3m
results in this output
===
BenchmarkReadRandomBadger/read-random-badger-128 20000000
11842 ns/op
--- BENCH: BenchmarkReadRandomBadger
bench_test.go:101: badger 13277801 keys had valid values.
bench_test.go:102: badger 7732300 keys had no values
bench_test.go:103: badger 0 keys had errors
PASS
ok github.com/dgraph-io/badger-bench 256.448s
===
Now, based on my understanding, the values above should add up to the
number of iterations (20000000), but instead add up to 13277801+7732300
= 21010101
Can somebody help me understand this discrepancy.
Code:
===
func BenchmarkReadRandomBadger(b *testing.B) {
// store setup
bdb, err := getBadger()
y.Check(err)
defer bdb.Close()
var totalFound uint64
var totalErr uint64
var totalNotFound uint64
b.Run("read-random-badger", func(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
var found, errored, notFound uint64
for pb.Next() {
key := newKey()
var val badger.KVItem
// get value from store
if err := bdb.Get(key, &val); err == nil && val.Value() != nil {
found++
} else if err != nil {
errored++
} else {
notFound++
}
}
atomic.AddUint64(&totalFound, found)
atomic.AddUint64(&totalErr, errored)
atomic.AddUint64(&totalNotFound, notFound)
})
})
b.Logf("badger %d keys had valid values.", totalFound)
b.Logf("badger %d keys had no values", totalNotFound)
b.Logf("badger %d keys had errors", totalErr)
}
===
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.