Add enum based rust solution for binarytrees #385
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.
Hello,
I found an optimisation to the rust solution of the binary_trees algorithm (5.rs) by switching from structs to enums
in combination with rust's powerful match expression. This replaces multiple
if
expressions with a singlematch
expression withinTreeNode::check(&self)
allowing the check function to be written in a functional style.Further improvements are heavily appreciated :)
hyperfine
shows a slight performance improvement (on my machine, unverified) using rustc 1.68.2 (9eb3afe9e 2023-03-27)5.rs yields
Benchmark 1: target/release/binary_tree 15
Time (mean ± σ): 109.7 ms ± 0.8 ms [User: 105.0 ms, System: 4.1 ms]
Range (min … max): 108.4 ms … 112.2 ms 27 runs
Benchmark 1: target/release/binary_tree 20
Time (mean ± σ): 5.377 s ± 0.018 s [User: 5.086 s, System: 0.286 s]
Range (min … max): 5.362 s … 5.408 s 10 runs
6.rs yields
Benchmark 1: target/release/binary_tree 15
Time (mean ± σ): 106.1 ms ± 0.5 ms [User: 101.4 ms, System: 4.2 ms]
Range (min … max): 105.0 ms … 107.4 ms 27 runs
Benchmark 1: target/release/binary_tree 20
Time (mean ± σ): 5.201 s ± 0.018 s [User: 4.918 s, System: 0.280 s]
Range (min … max): 5.177 s … 5.230 s 10 runs