mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-16 18:41:59 -07:00
58 lines
1011 B
Go
58 lines
1011 B
Go
|
// Copyright (C) 2014 Jakob Borg and other contributors. All rights reserved.
|
||
|
// Use of this source code is governed by an MIT-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
package xdr_test
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
type XDRBenchStruct struct {
|
||
|
I1 uint64
|
||
|
I2 uint32
|
||
|
I3 uint16
|
||
|
Bs []byte
|
||
|
S string
|
||
|
}
|
||
|
|
||
|
var res []byte // no to be optimized away
|
||
|
var s = XDRBenchStruct{
|
||
|
I1: 42,
|
||
|
I2: 43,
|
||
|
I3: 44,
|
||
|
Bs: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18},
|
||
|
S: "Hello World!",
|
||
|
}
|
||
|
var e = s.MarshalXDR()
|
||
|
|
||
|
func BenchmarkThisMarshal(b *testing.B) {
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
res = s.MarshalXDR()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkThisUnmarshal(b *testing.B) {
|
||
|
var t XDRBenchStruct
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
err := t.UnmarshalXDR(e)
|
||
|
if err != nil {
|
||
|
b.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkEncode(b *testing.B) {
|
||
|
bs := make([]byte, 0, 65536)
|
||
|
buf := bytes.NewBuffer(bs)
|
||
|
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
_, err := s.EncodeXDR(buf)
|
||
|
if err != nil {
|
||
|
b.Fatal(err)
|
||
|
}
|
||
|
buf.Reset()
|
||
|
}
|
||
|
}
|