59 lines
998 B
Go
59 lines
998 B
Go
|
// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
// +build !go1.2
|
||
|
|
||
|
package leveldb
|
||
|
|
||
|
import (
|
||
|
"sync/atomic"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func BenchmarkDBReadConcurrent(b *testing.B) {
|
||
|
p := openDBBench(b, false)
|
||
|
p.populate(b.N)
|
||
|
p.fill()
|
||
|
p.gc()
|
||
|
defer p.close()
|
||
|
|
||
|
b.ResetTimer()
|
||
|
b.SetBytes(116)
|
||
|
|
||
|
b.RunParallel(func(pb *testing.PB) {
|
||
|
iter := p.newIter()
|
||
|
defer iter.Release()
|
||
|
for pb.Next() && iter.Next() {
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func BenchmarkDBReadConcurrent2(b *testing.B) {
|
||
|
p := openDBBench(b, false)
|
||
|
p.populate(b.N)
|
||
|
p.fill()
|
||
|
p.gc()
|
||
|
defer p.close()
|
||
|
|
||
|
b.ResetTimer()
|
||
|
b.SetBytes(116)
|
||
|
|
||
|
var dir uint32
|
||
|
b.RunParallel(func(pb *testing.PB) {
|
||
|
iter := p.newIter()
|
||
|
defer iter.Release()
|
||
|
if atomic.AddUint32(&dir, 1)%2 == 0 {
|
||
|
for pb.Next() && iter.Next() {
|
||
|
}
|
||
|
} else {
|
||
|
if pb.Next() && iter.Last() {
|
||
|
for pb.Next() && iter.Prev() {
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|