neo-go/pkg/core/mpt/bench_test.go
Evgeniy Stratonikov 73e4040628 mpt: use BinWriter.Grow() instead of custom buffer
Also add benchmarks.

Signed-off-by: Evgeniy Stratonikov <evgeniy@nspcc.ru>
2021-08-10 09:34:05 +03:00

39 lines
915 B
Go

package mpt
import (
"testing"
"github.com/nspcc-dev/neo-go/internal/random"
)
func benchmarkBytes(b *testing.B, n Node) {
inv := n.(interface{ invalidateCache() })
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
inv.invalidateCache()
_ = n.Bytes()
}
}
func BenchmarkBytes(b *testing.B) {
b.Run("extension", func(b *testing.B) {
n := NewExtensionNode(random.Bytes(10), NewLeafNode(random.Bytes(10)))
benchmarkBytes(b, n)
})
b.Run("leaf", func(b *testing.B) {
n := NewLeafNode(make([]byte, 15))
benchmarkBytes(b, n)
})
b.Run("hash", func(b *testing.B) {
n := NewHashNode(random.Uint256())
benchmarkBytes(b, n)
})
b.Run("branch", func(b *testing.B) {
n := NewBranchNode()
n.Children[0] = NewLeafNode(random.Bytes(10))
n.Children[4] = NewLeafNode(random.Bytes(10))
n.Children[7] = NewLeafNode(random.Bytes(10))
n.Children[8] = NewLeafNode(random.Bytes(10))
})
}