|
|
- package words
-
- import (
- "testing"
-
- cmn "github.com/tendermint/tmlibs/common"
- )
-
- func warmupCodec(bank string) *WordCodec {
- codec, err := LoadCodec(bank)
- if err != nil {
- panic(err)
- }
- _, err = codec.GetIndex(codec.words[123])
- if err != nil {
- panic(err)
- }
- return codec
- }
-
- func BenchmarkCodec(b *testing.B) {
- banks := []string{"english", "spanish", "japanese", "chinese_simplified"}
-
- for _, bank := range banks {
- b.Run(bank, func(sub *testing.B) {
- codec := warmupCodec(bank)
- sub.ResetTimer()
- benchSuite(sub, codec)
- })
- }
- }
-
- func benchSuite(b *testing.B, codec *WordCodec) {
- b.Run("to_words", func(sub *testing.B) {
- benchMakeWords(sub, codec)
- })
- b.Run("to_bytes", func(sub *testing.B) {
- benchParseWords(sub, codec)
- })
- }
-
- func benchMakeWords(b *testing.B, codec *WordCodec) {
- numBytes := 32
- data := cmn.RandBytes(numBytes)
- for i := 1; i <= b.N; i++ {
- _, err := codec.BytesToWords(data)
- if err != nil {
- panic(err)
- }
- }
- }
-
- func benchParseWords(b *testing.B, codec *WordCodec) {
- // generate a valid test string to parse
- numBytes := 32
- data := cmn.RandBytes(numBytes)
- words, err := codec.BytesToWords(data)
- if err != nil {
- panic(err)
- }
-
- for i := 1; i <= b.N; i++ {
- _, err := codec.WordsToBytes(words)
- if err != nil {
- panic(err)
- }
- }
- }
|