github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/crypto/hash/merkle_bench_test.go (about)

     1  package hash
     2  
     3  import (
     4  	"math/rand"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/nspcc-dev/neo-go/pkg/util"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func BenchmarkMerkle(t *testing.B) {
    13  	var err error
    14  	var hashes = make([]util.Uint256, 100000)
    15  	var h = make([]byte, 32)
    16  	r := rand.New(rand.NewSource(time.Now().UnixNano()))
    17  	for i := range hashes {
    18  		r.Read(h)
    19  		hashes[i], err = util.Uint256DecodeBytesBE(h)
    20  		require.NoError(t, err)
    21  	}
    22  
    23  	t.Run("NewMerkleTree", func(t *testing.B) {
    24  		t.ResetTimer()
    25  		for n := 0; n < t.N; n++ {
    26  			tr, err := NewMerkleTree(hashes)
    27  			require.NoError(t, err)
    28  			_ = tr.Root()
    29  		}
    30  	})
    31  	t.Run("CalcMerkleRoot", func(t *testing.B) {
    32  		t.ResetTimer()
    33  		for n := 0; n < t.N; n++ {
    34  			_ = CalcMerkleRoot(hashes)
    35  		}
    36  	})
    37  }