hash: introduce memory-optimized merkle root hash calculation routine

NewMerkleTree is a memory hog, we can do better than that:

BenchmarkMerkle/NewMerkleTree-8                       13          88434670 ns/op        20828207 B/op     300035 allocs/op
BenchmarkMerkle/CalcMerkleRoot-8                      15          69264150 ns/op               0 B/op          0 allocs/op
This commit is contained in:
Roman Khimov 2020-09-15 18:38:15 +03:00
parent 3f27cf5901
commit d52e79668b
9 changed files with 83 additions and 33 deletions

View file

@ -72,11 +72,7 @@ func newBlock(cfg config.ProtocolConfiguration, index uint32, prev util.Uint256,
},
Transactions: txs,
}
err := b.RebuildMerkleRoot()
if err != nil {
panic(err)
}
b.RebuildMerkleRoot()
b.Script.InvocationScript = testchain.Sign(b.GetSignedPart())
return b
}