OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / go-crypto / keys / wordcodecbench_test.go
1 package keys
2
3 import (
4         "testing"
5
6         cmn "github.com/tendermint/tmlibs/common"
7 )
8
9 func warmupCodec(bank string) *WordCodec {
10         codec, err := LoadCodec(bank)
11         if err != nil {
12                 panic(err)
13         }
14         _, err = codec.GetIndex(codec.words[123])
15         if err != nil {
16                 panic(err)
17         }
18         return codec
19 }
20
21 func BenchmarkCodec(b *testing.B) {
22         banks := []string{"english", "spanish", "japanese", "chinese_simplified"}
23
24         for _, bank := range banks {
25                 b.Run(bank, func(sub *testing.B) {
26                         codec := warmupCodec(bank)
27                         sub.ResetTimer()
28                         benchSuite(sub, codec)
29                 })
30         }
31 }
32
33 func benchSuite(b *testing.B, codec *WordCodec) {
34         b.Run("to_words", func(sub *testing.B) {
35                 benchMakeWords(sub, codec)
36         })
37         b.Run("to_bytes", func(sub *testing.B) {
38                 benchParseWords(sub, codec)
39         })
40 }
41
42 func benchMakeWords(b *testing.B, codec *WordCodec) {
43         numBytes := 32
44         data := cmn.RandBytes(numBytes)
45         for i := 1; i <= b.N; i++ {
46                 _, err := codec.BytesToWords(data)
47                 if err != nil {
48                         panic(err)
49                 }
50         }
51 }
52
53 func benchParseWords(b *testing.B, codec *WordCodec) {
54         // generate a valid test string to parse
55         numBytes := 32
56         data := cmn.RandBytes(numBytes)
57         words, err := codec.BytesToWords(data)
58         if err != nil {
59                 panic(err)
60         }
61
62         for i := 1; i <= b.N; i++ {
63                 _, err := codec.WordsToBytes(words)
64                 if err != nil {
65                         panic(err)
66                 }
67         }
68 }