forest.UnmarshalBinaryNode() method is used frequently, but has a severe bottleneck. The current implementation computes the ID of the node after deserializing it by calling
ArborSerialize() on it and hashing the result. Since we started with the binary form of the node in the first place, this work is completely unnecessary.
Note: The existing implementation doesn't explicitly call
ArborSerialize, it happens several levels down the call stack. There are many possible ways to address this, and I'm happy to discuss them.
To properly fix this, we need: