279308288c
This commit adds a new function to the blockchain package named IsCoinBaseTx which performs the same function as IsCoinBase except it takes raw wire transactions as opposed to the higher level util transactions. While here, it also adds a file for benchmarks along with a couple of benchmarks for the IsCoinBase and IsCoinBaseTx functions. Finally, the function was very slightly optimized: BenchmarkIsCoinBaseOld 100000000 10.7 ns/op 0 B/op 0 allocs/op BenchmarkIsCoinBaseNew 200000000 6.05 ns/op 0 B/op 0 allocs/op
32 lines
765 B
Go
32 lines
765 B
Go
// Copyright (c) 2015 Conformal Systems LLC.
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package blockchain_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/btcsuite/btcd/blockchain"
|
|
"github.com/btcsuite/btcutil"
|
|
)
|
|
|
|
// BenchmarkIsCoinBase performs a simple benchmark against the IsCoinBase
|
|
// function.
|
|
func BenchmarkIsCoinBase(b *testing.B) {
|
|
tx, _ := btcutil.NewBlock(&Block100000).Tx(1)
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
blockchain.IsCoinBase(tx)
|
|
}
|
|
}
|
|
|
|
// BenchmarkIsCoinBaseTx performs a simple benchmark against the IsCoinBaseTx
|
|
// function.
|
|
func BenchmarkIsCoinBaseTx(b *testing.B) {
|
|
tx := Block100000.Transactions[1]
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
blockchain.IsCoinBaseTx(tx)
|
|
}
|
|
}
|