github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/mpt/bench_test.go (about)

     1  package mpt
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/internal/random"
     7  )
     8  
     9  func benchmarkBytes(b *testing.B, n Node) {
    10  	inv := n.(interface{ invalidateCache() })
    11  	b.ReportAllocs()
    12  	b.ResetTimer()
    13  	for i := 0; i < b.N; i++ {
    14  		inv.invalidateCache()
    15  		_ = n.Bytes()
    16  	}
    17  }
    18  
    19  func BenchmarkBytes(b *testing.B) {
    20  	b.Run("extension", func(b *testing.B) {
    21  		n := NewExtensionNode(random.Bytes(10), NewLeafNode(random.Bytes(10)))
    22  		benchmarkBytes(b, n)
    23  	})
    24  	b.Run("leaf", func(b *testing.B) {
    25  		n := NewLeafNode(make([]byte, 15))
    26  		benchmarkBytes(b, n)
    27  	})
    28  	b.Run("hash", func(b *testing.B) {
    29  		n := NewHashNode(random.Uint256())
    30  		benchmarkBytes(b, n)
    31  	})
    32  	b.Run("branch", func(b *testing.B) {
    33  		n := NewBranchNode()
    34  		n.Children[0] = NewLeafNode(random.Bytes(10))
    35  		n.Children[4] = NewLeafNode(random.Bytes(10))
    36  		n.Children[7] = NewLeafNode(random.Bytes(10))
    37  		n.Children[8] = NewLeafNode(random.Bytes(10))
    38  	})
    39  }