stackitem: add benchmark for serialization routines
Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
1853d0c713
commit
69cdd5252a
2 changed files with 39 additions and 0 deletions
|
@ -105,6 +105,28 @@ func TestFromToJSON(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
// getBigArray returns array takes up a lot of storage when serialized.
|
||||
func getBigArray(depth int) *Array {
|
||||
arr := NewArray([]Item{})
|
||||
for i := 0; i < depth; i++ {
|
||||
arr = NewArray([]Item{arr, arr})
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
func BenchmarkToJSON(b *testing.B) {
|
||||
arr := getBigArray(15)
|
||||
|
||||
b.ResetTimer()
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := ToJSON(arr)
|
||||
if err != nil {
|
||||
b.FailNow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This test is taken from the C# code
|
||||
// https://github.com/neo-project/neo/blob/master/tests/neo.UnitTests/VM/UT_Helper.cs#L30
|
||||
func TestToJSONWithTypeCompat(t *testing.T) {
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/nspcc-dev/neo-go/pkg/io"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -21,3 +22,19 @@ func TestSerializationMaxErr(t *testing.T) {
|
|||
_, err = Serialize(aitem)
|
||||
require.True(t, errors.Is(err, ErrTooBig), err)
|
||||
}
|
||||
|
||||
func BenchmarkEncodeBinary(b *testing.B) {
|
||||
arr := getBigArray(15)
|
||||
|
||||
w := io.NewBufBinWriter()
|
||||
|
||||
b.ResetTimer()
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
w.Reset()
|
||||
EncodeBinary(arr, w.BinWriter)
|
||||
if w.Err != nil {
|
||||
b.FailNow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue