improved pairwiseDisjoint performance #64
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.
improved
pairwiseDisjoint
performance:Added a preface to
pairwiseDisjoint
, which evaluates the first 2 sets against each other, before creating anallElements
set. Thereby, we can evaluate for equivalent values immediately, without wasting time copying. And only after those first 2 sets are shown to be disjoint do we create a disjoint union, and continue evaluating.This improves the
pairwiseDisjoint
function tremendously at scale, when rendering false results. The scale tests show that when evaluating low numbers of input sets, and expecting a false result,pairwiseDisjoint
's performance improved by at least 60% for all cases. And all of the worst case scenario tests put it well past a 99% time reduction.Meanwhile, for the expected true cases, where the input sets are all indeed pairwise disjoint, the timing remains consistent to within 2% of the original code.
[original] raw data:
[refactor] raw data:
[performance improvement] raw data: