package benchmarks
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/tendermint/go-amino"
|
|
|
|
proto "github.com/tendermint/tendermint/benchmarks/proto"
|
|
"github.com/tendermint/tendermint/crypto/ed25519"
|
|
"github.com/tendermint/tendermint/p2p"
|
|
ctypes "github.com/tendermint/tendermint/rpc/core/types"
|
|
)
|
|
|
|
func testNodeInfo(id p2p.ID) p2p.DefaultNodeInfo {
|
|
return p2p.DefaultNodeInfo{
|
|
ID_: id,
|
|
Moniker: "SOMENAME",
|
|
Network: "SOMENAME",
|
|
ListenAddr: "SOMEADDR",
|
|
Version: "SOMEVER",
|
|
Other: p2p.DefaultNodeInfoOther{
|
|
AminoVersion: "SOMESTRING",
|
|
P2PVersion: "OTHERSTRING",
|
|
},
|
|
}
|
|
}
|
|
|
|
func BenchmarkEncodeStatusWire(b *testing.B) {
|
|
b.StopTimer()
|
|
cdc := amino.NewCodec()
|
|
ctypes.RegisterAmino(cdc)
|
|
nodeKey := p2p.NodeKey{PrivKey: ed25519.GenPrivKey()}
|
|
status := &ctypes.ResultStatus{
|
|
NodeInfo: testNodeInfo(nodeKey.ID()),
|
|
SyncInfo: ctypes.SyncInfo{
|
|
LatestBlockHash: []byte("SOMEBYTES"),
|
|
LatestBlockHeight: 123,
|
|
LatestBlockTime: time.Unix(0, 1234),
|
|
},
|
|
ValidatorInfo: ctypes.ValidatorInfo{
|
|
PubKey: nodeKey.PubKey(),
|
|
},
|
|
}
|
|
b.StartTimer()
|
|
|
|
counter := 0
|
|
for i := 0; i < b.N; i++ {
|
|
jsonBytes, err := cdc.MarshalJSON(status)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
counter += len(jsonBytes)
|
|
}
|
|
|
|
}
|
|
|
|
func BenchmarkEncodeNodeInfoWire(b *testing.B) {
|
|
b.StopTimer()
|
|
cdc := amino.NewCodec()
|
|
ctypes.RegisterAmino(cdc)
|
|
nodeKey := p2p.NodeKey{PrivKey: ed25519.GenPrivKey()}
|
|
nodeInfo := testNodeInfo(nodeKey.ID())
|
|
b.StartTimer()
|
|
|
|
counter := 0
|
|
for i := 0; i < b.N; i++ {
|
|
jsonBytes, err := cdc.MarshalJSON(nodeInfo)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
counter += len(jsonBytes)
|
|
}
|
|
}
|
|
|
|
func BenchmarkEncodeNodeInfoBinary(b *testing.B) {
|
|
b.StopTimer()
|
|
cdc := amino.NewCodec()
|
|
ctypes.RegisterAmino(cdc)
|
|
nodeKey := p2p.NodeKey{PrivKey: ed25519.GenPrivKey()}
|
|
nodeInfo := testNodeInfo(nodeKey.ID())
|
|
b.StartTimer()
|
|
|
|
counter := 0
|
|
for i := 0; i < b.N; i++ {
|
|
jsonBytes := cdc.MustMarshalBinaryBare(nodeInfo)
|
|
counter += len(jsonBytes)
|
|
}
|
|
|
|
}
|
|
|
|
func BenchmarkEncodeNodeInfoProto(b *testing.B) {
|
|
b.StopTimer()
|
|
nodeKey := p2p.NodeKey{PrivKey: ed25519.GenPrivKey()}
|
|
nodeID := string(nodeKey.ID())
|
|
someName := "SOMENAME"
|
|
someAddr := "SOMEADDR"
|
|
someVer := "SOMEVER"
|
|
someString := "SOMESTRING"
|
|
otherString := "OTHERSTRING"
|
|
nodeInfo := proto.NodeInfo{
|
|
Id: &proto.ID{Id: &nodeID},
|
|
Moniker: &someName,
|
|
Network: &someName,
|
|
ListenAddr: &someAddr,
|
|
Version: &someVer,
|
|
Other: []string{someString, otherString},
|
|
}
|
|
b.StartTimer()
|
|
|
|
counter := 0
|
|
for i := 0; i < b.N; i++ {
|
|
bytes, err := nodeInfo.Marshal()
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
return
|
|
}
|
|
//jsonBytes := wire.JSONBytes(nodeInfo)
|
|
counter += len(bytes)
|
|
}
|
|
|
|
}
|