perf(chore): optimize binary search corner cases #4402
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.
Context
Several implementations of binary search in
QuestDB
have same bug in it - when reaching small range length binary search fallback to linear search, but without any lower bound on index. So, basically algorithms works in linear time (not O(log n)).This PR fixes a bunch of such similar bugs and start linear scan from lower bound calculated during binary search routine.
Initially this PR were written in kind of "humorous" style. But, as it can violate code of conduct and actually confuses more then helps - I rewrote PR description but leave original text for historical reference
The labor union of algorithms reported that
QuestDB
(QDB) violates the rights of "binary search algorithm" (BSA) by requiring it to work without utilizing any of its results. The BSA has earned trust through its extensive use in production applications, making the complaint valid. Therefore, QDB must respect the rights of the algorithm.During audit 4 violations were found.
One concrete example is here (commit hash: a077bee, file:
IntLongPriorityQueue.java
, line: 109, link)QDB must respect rights of algorithms, especially such honorable as BSA. PR fixes this uncomfortable situation.
Hope that all legal rights of algorithms will be respected in such amazing project as QDB from now on.