// Copyright (c) 2012, Suryandaru Triandana // 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() { } } } }) }