Sorry for creating confusion, my reading mistake.

I read the inner-loop as:

if err := bdb.Get(key, &val); err == nil && val.Value() != nil {
totalFound++
} else if err != nil {
totalErrored++
} else {
totalNotFound++
}

Which it obviously is not... :/ 
This day doesn't seem promising after this obvious oversight :D

+ Egon

On Thursday, 10 August 2017 10:10:07 UTC+3, peterGo wrote:
>
> Egon,
>
> Obviously I ran the race detector. No races were detected. Therefore, 
> since it wasn't germane, I omitted it from the posted results.
>
> Here's my results.
>
> $ go test -run=! -bench=. -v -cpu=4 -race total_test.go
> goos: linux
> goarch: amd64
> BenchmarkTotal/Count-4             50000000            24.4 ns/op
> --- BENCH: BenchmarkTotal/Count-4
>     total_test.go:16: count 1
>     total_test.go:16: count 0
>     total_test.go:16: count 0
>     total_test.go:16: count 0
>     total_test.go:16: count 100
>     total_test.go:16: count 0
>     total_test.go:16: count 0
>     total_test.go:16: count 0
>     total_test.go:16: count 3060
>     total_test.go:16: count 3980
>     ... [output truncated]
> --- BENCH: BenchmarkTotal
>     total_test.go:20: total 51010101
> PASS
> ok      command-line-arguments    2.258s
>
> Please post you results that show a race.
>
> Peter
>
> On Thursday, August 10, 2017 at 3:01:45 AM UTC-4, Egon wrote:
>>
>> Note, you also have a race in your code.
>>
>> Use `-race` to detect.
>>
>> + Egon
>>
>> On Thursday, 10 August 2017 06:43:34 UTC+3, d...@dgraph.io wrote:
>>>
>>> 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to