package blocks
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/gob"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
. "github.com/tendermint/tendermint/binary"
|
|
"github.com/ugorji/go/codec"
|
|
"github.com/vmihailenco/msgpack"
|
|
)
|
|
|
|
func BenchmarkTestCustom(b *testing.B) {
|
|
b.StopTimer()
|
|
|
|
h := &Header{
|
|
Name: "Header",
|
|
Height: 123,
|
|
Fees: 123,
|
|
Time: 123,
|
|
PrevHash: ByteSlice("prevhash"),
|
|
ValidationHash: ByteSlice("validationhash"),
|
|
TxsHash: ByteSlice("txshash"),
|
|
}
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
|
|
b.StartTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
buf.Reset()
|
|
h.WriteTo(buf)
|
|
h2 := ReadHeader(buf)
|
|
if h2.Name != "Header" {
|
|
b.Fatalf("wrong name")
|
|
}
|
|
}
|
|
}
|
|
|
|
type HHeader struct {
|
|
Name string `json:"N"`
|
|
Height uint64 `json:"H"`
|
|
Fees uint64 `json:"F"`
|
|
Time uint64 `json:"T"`
|
|
PrevHash []byte `json:"PH"`
|
|
ValidationHash []byte `json:"VH"`
|
|
TxsHash []byte `json:"DH"`
|
|
}
|
|
|
|
func BenchmarkTestJSON(b *testing.B) {
|
|
b.StopTimer()
|
|
|
|
h := &HHeader{
|
|
Name: "Header",
|
|
Height: 123,
|
|
Fees: 123,
|
|
Time: 123,
|
|
PrevHash: []byte("prevhash"),
|
|
ValidationHash: []byte("validationhash"),
|
|
TxsHash: []byte("txshash"),
|
|
}
|
|
h2 := &HHeader{}
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
enc := json.NewEncoder(buf)
|
|
dec := json.NewDecoder(buf)
|
|
|
|
b.StartTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
buf.Reset()
|
|
enc.Encode(h)
|
|
dec.Decode(h2)
|
|
if h2.Name != "Header" {
|
|
b.Fatalf("wrong name")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkTestGob(b *testing.B) {
|
|
b.StopTimer()
|
|
|
|
h := &Header{
|
|
Name: "Header",
|
|
Height: 123,
|
|
Fees: 123,
|
|
Time: 123,
|
|
PrevHash: []byte("prevhash"),
|
|
ValidationHash: []byte("validationhash"),
|
|
TxsHash: []byte("txshash"),
|
|
}
|
|
h2 := &Header{}
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
enc := gob.NewEncoder(buf)
|
|
dec := gob.NewDecoder(buf)
|
|
|
|
b.StartTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
buf.Reset()
|
|
enc.Encode(h)
|
|
dec.Decode(h2)
|
|
if h2.Name != "Header" {
|
|
b.Fatalf("wrong name")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkTestMsgPack(b *testing.B) {
|
|
b.StopTimer()
|
|
|
|
h := &Header{
|
|
Name: "Header",
|
|
Height: 123,
|
|
Fees: 123,
|
|
Time: 123,
|
|
PrevHash: []byte("prevhash"),
|
|
ValidationHash: []byte("validationhash"),
|
|
TxsHash: []byte("txshash"),
|
|
}
|
|
h2 := &Header{}
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
enc := msgpack.NewEncoder(buf)
|
|
dec := msgpack.NewDecoder(buf)
|
|
|
|
b.StartTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
buf.Reset()
|
|
enc.Encode(h)
|
|
dec.Decode(h2)
|
|
if h2.Name != "Header" {
|
|
b.Fatalf("wrong name")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkTestMsgPack2(b *testing.B) {
|
|
b.StopTimer()
|
|
|
|
h := &Header{
|
|
Name: "Header",
|
|
Height: 123,
|
|
Fees: 123,
|
|
Time: 123,
|
|
PrevHash: []byte("prevhash"),
|
|
ValidationHash: []byte("validationhash"),
|
|
TxsHash: []byte("txshash"),
|
|
}
|
|
h2 := &Header{}
|
|
var mh codec.MsgpackHandle
|
|
handle := &mh
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
enc := codec.NewEncoder(buf, handle)
|
|
dec := codec.NewDecoder(buf, handle)
|
|
|
|
b.StartTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
buf.Reset()
|
|
enc.Encode(h)
|
|
dec.Decode(h2)
|
|
if h2.Name != "Header" {
|
|
b.Fatalf("wrong name")
|
|
}
|
|
}
|
|
}
|