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 }