From 533b8ba0f8c364a8a94c99059bd9bb1487e978ad Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Fri, 21 May 2021 12:56:56 +0200 Subject: [PATCH] rlp: add big.Int decoder benchmark --- rlp/decode_test.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/rlp/decode_test.go b/rlp/decode_test.go index 1c3c25b46f34..36d254e18eb9 100644 --- a/rlp/decode_test.go +++ b/rlp/decode_test.go @@ -26,6 +26,8 @@ import ( "reflect" "strings" "testing" + + "github.com/ethereum/go-ethereum/common/math" ) func TestStreamKind(t *testing.T) { @@ -1104,8 +1106,28 @@ func BenchmarkDecodeByteArrayStruct(b *testing.B) { var out byteArrayStruct for i := 0; i < b.N; i++ { - err := DecodeBytes(enc, &out) - if err != nil { + if err := DecodeBytes(enc, &out); err != nil { + b.Fatal(err) + } + } +} + +func BenchmarkDecodeBigInts(b *testing.B) { + ints := make([]*big.Int, 200) + for i := range ints { + ints[i] = math.BigPow(2, int64(i)) + } + enc, err := EncodeToBytes(ints) + if err != nil { + b.Fatal(err) + } + b.SetBytes(int64(len(enc))) + b.ReportAllocs() + b.ResetTimer() + + var out []*big.Int + for i := 0; i < b.N; i++ { + if err := DecodeBytes(enc, &out); err != nil { b.Fatal(err) } }