lbcutil/gcs/gcsbench_test.go

50 lines
1.2 KiB
Go

// Copyright (c) 2016-2017 The btcsuite developers
// Copyright (c) 2016-2017 The Lightning Network Developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package gcs_test
import (
"encoding/binary"
"math/rand"
"testing"
"github.com/btcsuite/btcutil/gcs"
)
// BenchmarkGCSFilterBuild benchmarks building a filter.
func BenchmarkGCSFilterBuild(b *testing.B) {
b.StopTimer()
for i := 0; i < gcs.KeySize; i += 4 {
binary.BigEndian.PutUint32(key[i:], rand.Uint32())
}
b.StartTimer()
for i := 0; i < b.N; i++ {
gcs.BuildGCSFilter(P, key, contents)
}
}
// BenchmarkGCSFilterMatch benchmarks querying a filter for a single value.
func BenchmarkGCSFilterMatch(b *testing.B) {
b.StopTimer()
filter, err = gcs.BuildGCSFilter(P, key, contents)
if err != nil {
b.Errorf("Failed to build filter")
}
b.StartTimer()
for i := 0; i < b.N; i++ {
filter.Match(key, []byte("Nate"))
filter.Match(key, []byte("Nates"))
}
}
// BenchmarkGCSFilterMatchAny benchmarks querying a filter for a list of values.
func BenchmarkGCSFilterMatchAny(b *testing.B) {
for i := 0; i < b.N; i++ {
filter.MatchAny(key, contents2)
}
}