Refactor logic into separate classes #128
Merged
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.
The frontier currently holds logic for "track lines we've not yet created blocks out of" as well as "evict blocks that are engulfed by larger blocks". These are two logically separate concerns that can be extracted into their own classes.
popis calledpop.In addition there's a minor perf in the unvisited logic. We don't have to search and remove the element in the array, we can be lazy and remove it once it finds its way to the end of the queue since we're already tracking them in a hash. Also moved to make the hash
compare_by_identity. Results are too close to post perf difference without doing some statistical analysis.