2019-07-18 06:21:50 +00:00
|
|
|
package address
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"math/rand"
|
|
|
|
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func blsaddr(n int64) Address {
|
|
|
|
buf := make([]byte, 48)
|
|
|
|
r := rand.New(rand.NewSource(n))
|
|
|
|
r.Read(buf)
|
|
|
|
|
|
|
|
addr, err := NewBLSAddress(buf)
|
|
|
|
if err != nil {
|
2019-11-16 23:41:14 +00:00
|
|
|
panic(err) // ok
|
2019-07-18 06:21:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return addr
|
|
|
|
}
|
|
|
|
|
|
|
|
func makeActorAddresses(n int) [][]byte {
|
|
|
|
var addrs [][]byte
|
|
|
|
for i := 0; i < n; i++ {
|
|
|
|
a, err := NewActorAddress([]byte(fmt.Sprintf("ACTOR ADDRESS %d", i)))
|
|
|
|
if err != nil {
|
2019-11-16 23:41:14 +00:00
|
|
|
panic(err) // ok
|
2019-07-18 06:21:50 +00:00
|
|
|
}
|
|
|
|
addrs = append(addrs, a.Bytes())
|
|
|
|
}
|
|
|
|
|
|
|
|
return addrs
|
|
|
|
}
|
|
|
|
|
|
|
|
func makeBlsAddresses(n int64) [][]byte {
|
|
|
|
var addrs [][]byte
|
|
|
|
for i := int64(0); i < n; i++ {
|
|
|
|
addrs = append(addrs, blsaddr(n).Bytes())
|
|
|
|
}
|
|
|
|
return addrs
|
|
|
|
}
|
|
|
|
|
|
|
|
func makeSecpAddresses(n int) [][]byte {
|
|
|
|
var addrs [][]byte
|
|
|
|
for i := 0; i < n; i++ {
|
|
|
|
r := rand.New(rand.NewSource(int64(i)))
|
|
|
|
buf := make([]byte, 32)
|
|
|
|
r.Read(buf)
|
|
|
|
|
|
|
|
a, err := NewSecp256k1Address(buf)
|
|
|
|
if err != nil {
|
2019-11-16 23:41:14 +00:00
|
|
|
panic(err) // ok
|
2019-07-18 06:21:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
addrs = append(addrs, a.Bytes())
|
|
|
|
}
|
|
|
|
return addrs
|
|
|
|
}
|
|
|
|
|
|
|
|
func makeIDAddresses(n int) [][]byte {
|
|
|
|
var addrs [][]byte
|
|
|
|
for i := 0; i < n; i++ {
|
|
|
|
|
|
|
|
a, err := NewIDAddress(uint64(i))
|
|
|
|
if err != nil {
|
2019-11-16 23:41:14 +00:00
|
|
|
panic(err) // ok
|
2019-07-18 06:21:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
addrs = append(addrs, a.Bytes())
|
|
|
|
}
|
|
|
|
return addrs
|
|
|
|
}
|
|
|
|
|
|
|
|
func BenchmarkParseActorAddress(b *testing.B) {
|
|
|
|
benchTestWithAddrs := func(a [][]byte) func(b *testing.B) {
|
|
|
|
return func(b *testing.B) {
|
|
|
|
b.ReportAllocs()
|
|
|
|
b.ResetTimer()
|
|
|
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
_, err := NewFromBytes(a[i%len(a)])
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
b.Run("actor", benchTestWithAddrs(makeActorAddresses(20)))
|
|
|
|
b.Run("bls", benchTestWithAddrs(makeBlsAddresses(20)))
|
|
|
|
b.Run("secp256k1", benchTestWithAddrs(makeSecpAddresses(20)))
|
|
|
|
b.Run("id", benchTestWithAddrs(makeIDAddresses(20)))
|
|
|
|
}
|