dcrd/txscript/stdaddr/bench_test.go
Dave Collins 37e4569917
stdaddr: Move from internal/staging to txscript.
This moves the new stdaddr package from the internal staging area to the
txscript module and updates the relevant paths and package README.md
accordingly.
2021-03-30 01:43:48 -05:00

119 lines
3.1 KiB
Go

// Copyright (c) 2021 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package stdaddr
import (
"testing"
"github.com/decred/dcrd/chaincfg/v3"
)
// BenchmarkDecode benchmarks the performance of decoding various types of
// addresses.
func BenchmarkDecode(b *testing.B) {
mainNetParams := chaincfg.MainNetParams()
benches := []struct {
name string // benchmark name
addr string // address to decode
params AddressParams
}{{
name: "v0 p2sh",
addr: "DcuQKx8BES9wU7C6Q5VmLBjw436r27hayjS",
params: mainNetParams,
}, {
name: "v0 p2pkh-ecdsa-secp256k1",
addr: "DsUZxxoHJSty8DCfwfartwTYbuhmVct7tJu",
params: mainNetParams,
}, {
name: "v0 p2pkh-ed25519",
addr: "DeeUhrRoTp4DftsqddVW96yMGMW4sgQFYUE",
params: mainNetParams,
}, {
name: "v0 p2pkh-schnorr-secp256k1",
addr: "DSXcZv4oSRiEoWL2a9aD8sgfptRo1YEXNKj",
params: mainNetParams,
}, {
name: "v0 p2pk-ecdsa-secp256k1",
addr: "DkM3ZigNyiwHrsXRjkDQ8t8tW6uKGW9g61qEkG3bMqQPQWYEf5X3J",
params: mainNetParams,
}, {
name: "v0 p2pk-ed25519",
addr: "DkM5zR8tqWNAHngZQDTyAeqzabZxMKrkSbCFULDhmvySn3uHmm221",
params: mainNetParams,
}, {
name: "v0 p2pk-schnorr-secp256k1",
addr: "DkM7TD2qsne9DKo4uA2ZNt3XhejYVwT5mmQWtUXtjdPhRHXTSKxN4",
params: mainNetParams,
}}
for _, bench := range benches {
b.Run(bench.name, func(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := DecodeAddress(bench.addr, bench.params)
if err != nil {
b.Fatalf("%q: unexpected error: %v", bench.name, err)
}
}
})
}
}
// BenchmarkPaymentScript benchmarks the performance of generating payment
// scripts for various types of addresses.
func BenchmarkPaymentScript(b *testing.B) {
mainNetParams := chaincfg.MainNetParams()
benches := []struct {
name string // benchmark name
addr string // address to decode
params AddressParams
}{{
name: "v0 p2sh",
addr: "DcuQKx8BES9wU7C6Q5VmLBjw436r27hayjS",
params: mainNetParams,
}, {
name: "v0 p2pkh-ecdsa-secp256k1",
addr: "DsUZxxoHJSty8DCfwfartwTYbuhmVct7tJu",
params: mainNetParams,
}, {
name: "v0 p2pkh-ed25519",
addr: "DeeUhrRoTp4DftsqddVW96yMGMW4sgQFYUE",
params: mainNetParams,
}, {
name: "v0 p2pkh-schnorr-secp256k1",
addr: "DSXcZv4oSRiEoWL2a9aD8sgfptRo1YEXNKj",
params: mainNetParams,
}, {
name: "v0 p2pk-ecdsa-secp256k1",
addr: "DkM3ZigNyiwHrsXRjkDQ8t8tW6uKGW9g61qEkG3bMqQPQWYEf5X3J",
params: mainNetParams,
}, {
name: "v0 p2pk-ed25519",
addr: "DkM5zR8tqWNAHngZQDTyAeqzabZxMKrkSbCFULDhmvySn3uHmm221",
params: mainNetParams,
}, {
name: "v0 p2pk-schnorr-secp256k1",
addr: "DkM7TD2qsne9DKo4uA2ZNt3XhejYVwT5mmQWtUXtjdPhRHXTSKxN4",
params: mainNetParams,
}}
for _, bench := range benches {
addr, err := DecodeAddress(bench.addr, bench.params)
if err != nil {
b.Fatalf("%q: unexpected error: %v", bench.name, err)
}
b.Run(bench.name, func(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = addr.PaymentScript()
}
})
}
}