2014-01-01 17:16:15 +01:00
|
|
|
// Copyright (c) 2013-2014 Conformal Systems LLC.
|
|
|
|
// Use of this source code is governed by an ISC
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
2013-10-26 08:57:00 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/rand"
|
|
|
|
"testing"
|
2014-07-02 15:50:08 +02:00
|
|
|
|
2015-01-16 22:13:21 +01:00
|
|
|
"github.com/btcsuite/btcwire"
|
2013-10-26 08:57:00 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// BenchmarkMruInventoryList performs basic benchmarks on the most recently
|
|
|
|
// used inventory handling.
|
|
|
|
func BenchmarkMruInventoryList(b *testing.B) {
|
|
|
|
// Create a bunch of fake inventory vectors to use in benchmarking
|
|
|
|
// the mru inventory code.
|
|
|
|
b.StopTimer()
|
|
|
|
numInvVects := 100000
|
|
|
|
invVects := make([]*btcwire.InvVect, 0, numInvVects)
|
|
|
|
for i := 0; i < numInvVects; i++ {
|
|
|
|
hashBytes := make([]byte, btcwire.HashSize)
|
|
|
|
rand.Read(hashBytes)
|
|
|
|
hash, _ := btcwire.NewShaHash(hashBytes)
|
|
|
|
iv := btcwire.NewInvVect(btcwire.InvTypeBlock, hash)
|
|
|
|
invVects = append(invVects, iv)
|
|
|
|
}
|
|
|
|
b.StartTimer()
|
|
|
|
|
|
|
|
// Benchmark the add plus evicition code.
|
|
|
|
limit := 20000
|
|
|
|
mruInvMap := NewMruInventoryMap(uint(limit))
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
mruInvMap.Add(invVects[i%numInvVects])
|
|
|
|
}
|
|
|
|
}
|