Remove Tree::{encode,decode}() in favor of Tree::{de}serialize()
#2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow-up to #1.
TL;DR
Our custom binary encoding protocol is slightly more size efficient than serde + bincode, but both encoding and decoding are slower (benchmarks taken on a 2018 MacBook Pro).
I think it makes sense to remove the
EncodeandDecodetraits in favor of theTree::serialize()andTree::deserialize()methods, which also have the added benefit of allowing users to use any serde data format they want.Size comparison
Encode vs Serialize
()bincode"x".repeat(256)bincodeSpeed comparison
Encode vs Serialize
()bincode"x".repeat(256)bincodeDecode vs Deserialize
()bincode"x".repeat(256)bincode