-
Notifications
You must be signed in to change notification settings - Fork 693
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose BitSliceIterator
and BitIndexIterator
(#1864)
#1865
Conversation
6126646
to
4af7ae1
Compare
let next = self.iter.next().expect("IndexIterator exhausted early"); | ||
self.remaining -= 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fascinatingly swapping these two lines around results in a 50% performance regression for some benchmarks
Codecov Report
@@ Coverage Diff @@
## master #1865 +/- ##
==========================================
- Coverage 83.48% 83.45% -0.03%
==========================================
Files 201 203 +2
Lines 57000 57145 +145
==========================================
+ Hits 47584 47688 +104
- Misses 9416 9457 +41
Continue to review full report at Codecov.
|
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
BitSliceIterator
and BitIndexIterator
(#1864)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Which issue does this PR close?
Part of #1864
Rationale for this change
We have heavily optimised code for iterating bitmasks, we should use it in more places
What changes are included in this PR?
Extracts the core logic of filter::SlicesIterator and filter::IndexIterator into a public module where they can be used by other code.
I have confirmed there is no impact on the performance of the filter benchmarks
Are there any user-facing changes?
No