⚡️ Slightly faster SequenceSet#xor
#567
Merged
+12
−6
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 results are highly dependant on data, YJIT, etc... but in my tests this implementation seems to consistently run faster.
When I first wrote this code, the
masterbranch was consistently 1.3x-1.5x slower. The speedup is much less now, so other implementation details are probably more important. Specifically, most of the speedup probably came from the change in #550, which coercedrhsto a SequenceSet before using it.When the internal set data implementation is changed (see #484), this and other operations should be re-evaluated. I suspect an iterative "merge" may be the fastest overall approach, but that code is more complex than simply relying on the core add/subtract/complement methods with simple boolean algebra.