Experiment: Use a bit in RefRandstrobe to indicate whether it is filtered #466
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.
Profiling suggested that the
Index::is_filtered()call is a bit slow. It checks whether a randstrobe occurs more often thanfilter_cutoffby accessingrandstrobes[i]andrandstrobes[i + filter_cutoff]and comparing the hashes.The slowness could come from two cache misses because two quite far apart memory locations are read. To get rid of the second access, the idea is to use one bit within
RefRandstrobeto store whether the item is filtered.Somewhat unexpectedly, this does not improve speed. It does reduce cache misses according to
perf stat -d, but this does not translate to a shorter runtime.