9 . "github.com/tendermint/tmlibs/common"
12 func BenchmarkRandomReadsWrites(b *testing.B) {
15 numItems := int64(1000000)
16 internal := map[int64]int64{}
17 for i := 0; i < int(numItems); i++ {
18 internal[int64(i)] = int64(0)
20 db, err := NewGoLevelDB(Fmt("test_%x", RandStr(12)), "")
26 fmt.Println("ok, starting")
29 for i := 0; i < b.N; i++ {
32 idx := (int64(RandInt()) % numItems)
35 idxBytes := int642Bytes(int64(idx))
36 valBytes := int642Bytes(int64(val))
37 //fmt.Printf("Set %X -> %X\n", idxBytes, valBytes)
45 idx := (int64(RandInt()) % numItems)
47 idxBytes := int642Bytes(int64(idx))
48 valBytes := db.Get(idxBytes)
49 //fmt.Printf("Get %X -> %X\n", idxBytes, valBytes)
51 if !bytes.Equal(valBytes, nil) {
52 b.Errorf("Expected %v for %v, got %X",
57 if len(valBytes) != 8 {
58 b.Errorf("Expected length 8 for %v, got %X",
62 valGot := bytes2Int64(valBytes)
64 b.Errorf("Expected %v for %v, got %v",
75 func int642Bytes(i int64) []byte {
76 buf := make([]byte, 8)
77 binary.BigEndian.PutUint64(buf, uint64(i))
81 func bytes2Int64(buf []byte) int64 {
82 return int64(binary.BigEndian.Uint64(buf))