Adding wire.JSON vs wire.Binary vs protobuf benchmarks
This commit is contained in:
parent
a62c7bfef1
commit
ac4c43c3e6
|
@ -0,0 +1,110 @@
|
||||||
|
package benchmarks
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/tendermint/go-crypto"
|
||||||
|
"github.com/tendermint/go-p2p"
|
||||||
|
"github.com/tendermint/go-wire"
|
||||||
|
proto "github.com/tendermint/tendermint/benchmarks/proto"
|
||||||
|
ctypes "github.com/tendermint/tendermint/rpc/core/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkEncodeStatusWire(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
||||||
|
status := &ctypes.ResultStatus{
|
||||||
|
NodeInfo: &p2p.NodeInfo{
|
||||||
|
PubKey: pubKey,
|
||||||
|
Moniker: "SOMENAME",
|
||||||
|
Network: "SOMENAME",
|
||||||
|
RemoteAddr: "SOMEADDR",
|
||||||
|
ListenAddr: "SOMEADDR",
|
||||||
|
Version: "SOMEVER",
|
||||||
|
Other: []string{"SOMESTRING", "OTHERSTRING"},
|
||||||
|
},
|
||||||
|
PubKey: pubKey,
|
||||||
|
LatestBlockHash: []byte("SOMEBYTES"),
|
||||||
|
LatestBlockHeight: 123,
|
||||||
|
LatestBlockTime: 1234,
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
counter := 0
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
jsonBytes := wire.JSONBytes(status)
|
||||||
|
counter += len(jsonBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkEncodeNodeInfoWire(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
||||||
|
nodeInfo := &p2p.NodeInfo{
|
||||||
|
PubKey: pubKey,
|
||||||
|
Moniker: "SOMENAME",
|
||||||
|
Network: "SOMENAME",
|
||||||
|
RemoteAddr: "SOMEADDR",
|
||||||
|
ListenAddr: "SOMEADDR",
|
||||||
|
Version: "SOMEVER",
|
||||||
|
Other: []string{"SOMESTRING", "OTHERSTRING"},
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
counter := 0
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
jsonBytes := wire.JSONBytes(nodeInfo)
|
||||||
|
counter += len(jsonBytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkEncodeNodeInfoBinary(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
||||||
|
nodeInfo := &p2p.NodeInfo{
|
||||||
|
PubKey: pubKey,
|
||||||
|
Moniker: "SOMENAME",
|
||||||
|
Network: "SOMENAME",
|
||||||
|
RemoteAddr: "SOMEADDR",
|
||||||
|
ListenAddr: "SOMEADDR",
|
||||||
|
Version: "SOMEVER",
|
||||||
|
Other: []string{"SOMESTRING", "OTHERSTRING"},
|
||||||
|
}
|
||||||
|
b.StartTimer()
|
||||||
|
|
||||||
|
counter := 0
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
jsonBytes := wire.BinaryBytes(nodeInfo)
|
||||||
|
counter += len(jsonBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkEncodeNodeInfoProto(b *testing.B) {
|
||||||
|
b.StopTimer()
|
||||||
|
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
||||||
|
pubKey2 := &proto.PubKey{Ed25519: &proto.PubKeyEd25519{Bytes: pubKey[:]}}
|
||||||
|
nodeInfo := &proto.NodeInfo{
|
||||||
|
PubKey: pubKey2,
|
||||||
|
Moniker: "SOMENAME",
|
||||||
|
Network: "SOMENAME",
|
||||||
|
RemoteAddr: "SOMEADDR",
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
Doing some protobuf tests here.
|
||||||
|
Using gogoprotobuf.
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,25 @@
|
||||||
|
message ResultStatus {
|
||||||
|
optional NodeInfo nodeInfo = 1;
|
||||||
|
required PubKey pubKey = 2;
|
||||||
|
required bytes latestBlockHash = 3;
|
||||||
|
required int64 latestBlockHeight = 4;
|
||||||
|
required int64 latestBlocktime = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message NodeInfo {
|
||||||
|
required PubKey pubKey = 1;
|
||||||
|
required string moniker = 2;
|
||||||
|
required string network = 3;
|
||||||
|
required string remoteAddr = 4;
|
||||||
|
required string listenAddr = 5;
|
||||||
|
required string version = 6;
|
||||||
|
repeated string other = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message PubKey {
|
||||||
|
optional PubKeyEd25519 ed25519 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message PubKeyEd25519 {
|
||||||
|
required bytes bytes = 1;
|
||||||
|
}
|
|
@ -1,60 +0,0 @@
|
||||||
package benchmarks
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/tendermint/go-crypto"
|
|
||||||
"github.com/tendermint/go-p2p"
|
|
||||||
"github.com/tendermint/go-wire"
|
|
||||||
ctypes "github.com/tendermint/tendermint/rpc/core/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func BenchmarkEncodeStatus(b *testing.B) {
|
|
||||||
b.StopTimer()
|
|
||||||
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
|
||||||
status := &ctypes.ResultStatus{
|
|
||||||
NodeInfo: &p2p.NodeInfo{
|
|
||||||
PubKey: pubKey,
|
|
||||||
Moniker: "SOMENAME",
|
|
||||||
Network: "SOMENAME",
|
|
||||||
RemoteAddr: "SOMEADDR",
|
|
||||||
ListenAddr: "SOMEADDR",
|
|
||||||
Version: "SOMEVER",
|
|
||||||
Other: []string{"SOMESTRING", "OTHERSTRING"},
|
|
||||||
},
|
|
||||||
PubKey: pubKey,
|
|
||||||
LatestBlockHash: []byte("SOMEBYTES"),
|
|
||||||
LatestBlockHeight: 123,
|
|
||||||
LatestBlockTime: 1234,
|
|
||||||
}
|
|
||||||
b.StartTimer()
|
|
||||||
|
|
||||||
counter := 0
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
jsonBytes := wire.JSONBytes(status)
|
|
||||||
counter += len(jsonBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkEncodeNodeInfo(b *testing.B) {
|
|
||||||
b.StopTimer()
|
|
||||||
pubKey := crypto.GenPrivKeyEd25519().PubKey().(crypto.PubKeyEd25519)
|
|
||||||
nodeInfo := &p2p.NodeInfo{
|
|
||||||
PubKey: pubKey,
|
|
||||||
Moniker: "SOMENAME",
|
|
||||||
Network: "SOMENAME",
|
|
||||||
RemoteAddr: "SOMEADDR",
|
|
||||||
ListenAddr: "SOMEADDR",
|
|
||||||
Version: "SOMEVER",
|
|
||||||
Other: []string{"SOMESTRING", "OTHERSTRING"},
|
|
||||||
}
|
|
||||||
b.StartTimer()
|
|
||||||
|
|
||||||
counter := 0
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
jsonBytes := wire.JSONBytes(nodeInfo)
|
|
||||||
counter += len(jsonBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue