-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcodec_test.go
84 lines (69 loc) · 1.65 KB
/
codec_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package rpcng
import (
"testing"
"github.com/iqoption/rpcng/codec"
"github.com/iqoption/rpcng/codec/easyjson"
"github.com/iqoption/rpcng/codec/json"
"github.com/iqoption/rpcng/codec/msgp"
"github.com/iqoption/rpcng/codec/xdr"
)
func benchmarkCodecEncode(b *testing.B, c codec.Codec) {
b.SetParallelism(250)
b.ReportAllocs()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
var err error
for i := 0; pb.Next(); i++ {
if _, err = c.Encode(&sample); err != nil {
b.Fatalf("Can't encode: %s", err)
}
}
})
}
func benchmarkCodecDecode(b *testing.B, c codec.Codec) {
var (
raw []byte
err error
)
if raw, err = c.Encode(&sample); err != nil {
b.Fatalf("Can't encode: %s", err)
}
b.SetParallelism(250)
b.ReportAllocs()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for i := 0; pb.Next(); i++ {
var (
err error
val CodecStruct
)
if err = c.Decode(raw, &val); err != nil {
b.Fatalf("Can't decode: %s", err)
}
}
})
}
func BenchmarkCodecEasyjsonEncode(b *testing.B) {
benchmarkCodecEncode(b, easyjson.New())
}
func BenchmarkCodecEasyjsonDecode(b *testing.B) {
benchmarkCodecDecode(b, easyjson.New())
}
func BenchmarkCodecJsonEncode(b *testing.B) {
benchmarkCodecEncode(b, json.New())
}
func BenchmarkCodecJsonDecode(b *testing.B) {
benchmarkCodecDecode(b, json.New())
}
func BenchmarkCodecXdrEncode(b *testing.B) {
benchmarkCodecEncode(b, xdr.New())
}
func BenchmarkCodecXdrDecode(b *testing.B) {
benchmarkCodecDecode(b, xdr.New())
}
func BenchmarkCodecMsgpEncode(b *testing.B) {
benchmarkCodecEncode(b, msgp.New())
}
func BenchmarkCodecMsgpDecode(b *testing.B) {
benchmarkCodecDecode(b, msgp.New())
}