...

Source file src/github.com/syndtr/goleveldb/leveldb/memdb/bench_test.go

Documentation: github.com/syndtr/goleveldb/leveldb/memdb

     1  // Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
     2  // All rights reserved.
     3  //
     4  // Use of this source code is governed by a BSD-style license that can be
     5  // found in the LICENSE file.
     6  
     7  package memdb
     8  
     9  import (
    10  	"encoding/binary"
    11  	"math/rand"
    12  	"testing"
    13  
    14  	"github.com/syndtr/goleveldb/leveldb/comparer"
    15  )
    16  
    17  func BenchmarkPut(b *testing.B) {
    18  	buf := make([][4]byte, b.N)
    19  	for i := range buf {
    20  		binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
    21  	}
    22  
    23  	b.ResetTimer()
    24  	p := New(comparer.DefaultComparer, 0)
    25  	for i := range buf {
    26  		if err := p.Put(buf[i][:], nil); err != nil {
    27  			b.Fatal(err)
    28  		}
    29  	}
    30  }
    31  
    32  func BenchmarkPutRandom(b *testing.B) {
    33  	buf := make([][4]byte, b.N)
    34  	for i := range buf {
    35  		binary.LittleEndian.PutUint32(buf[i][:], uint32(rand.Int()))
    36  	}
    37  
    38  	b.ResetTimer()
    39  	p := New(comparer.DefaultComparer, 0)
    40  	for i := range buf {
    41  		if err := p.Put(buf[i][:], nil); err != nil {
    42  			b.Fatal(err)
    43  		}
    44  	}
    45  }
    46  
    47  func BenchmarkGet(b *testing.B) {
    48  	buf := make([][4]byte, b.N)
    49  	for i := range buf {
    50  		binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
    51  	}
    52  
    53  	p := New(comparer.DefaultComparer, 0)
    54  	for i := range buf {
    55  		if err := p.Put(buf[i][:], nil); err != nil {
    56  			b.Fatal(err)
    57  		}
    58  	}
    59  
    60  	b.ResetTimer()
    61  	for i := range buf {
    62  		if _, err := p.Get(buf[i][:]); err != nil {
    63  			b.Fatal(err)
    64  		}
    65  	}
    66  }
    67  
    68  func BenchmarkGetRandom(b *testing.B) {
    69  	buf := make([][4]byte, b.N)
    70  	for i := range buf {
    71  		binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
    72  	}
    73  
    74  	p := New(comparer.DefaultComparer, 0)
    75  	for i := range buf {
    76  		if err := p.Put(buf[i][:], nil); err != nil {
    77  			b.Fatal(err)
    78  		}
    79  	}
    80  
    81  	b.ResetTimer()
    82  	for i := 0; i < b.N; i++ {
    83  		if _, err := p.Get(buf[rand.Int()%b.N][:]); err != nil {
    84  			b.Fatal(err)
    85  		}
    86  	}
    87  }
    88  

View as plain text