Add function to check if two `IntSet`s are `disjoint`.
authorVíctor López Juan <victor@lopezjuan.com>
Sun, 1 Jan 2017 21:12:43 +0000 (22:12 +0100)
committerVíctor López Juan <victor@lopezjuan.com>
Sun, 21 Jan 2018 16:19:58 +0000 (17:19 +0100)
commita1466a51f1a752c685c36dcfd1df7f06e92112a6
tree5bb60f8eb489b80a6ae18700014d27f0a47ce171
parent32ebc15605ca50e6521523036900324ff11ce085
Add function to check if two `IntSet`s are `disjoint`.

This function is equivalent to computing the intersection and checking
if it is empty. However, it is more efficient because the intersection
set does not need to be built in memory, and the computation can
be short-circuited as soon as two non-disjoint `Tip`s are found.

Benchmark intset-benchmarks: RUNNING...
[...]
benchmarking disjoint:false
time                 149.2 ns   (147.7 ns .. 150.6 ns)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 147.0 ns   (145.4 ns .. 148.6 ns)
std dev              5.281 ns   (4.234 ns .. 6.800 ns)
variance introduced by outliers: 54% (severely inflated)

benchmarking disjoint:true
time                 2.500 μs   (2.468 μs .. 2.533 μs)
                     0.999 R²   (0.999 R² .. 0.999 R²)
mean                 2.451 μs   (2.425 μs .. 2.477 μs)
std dev              81.58 ns   (69.22 ns .. 98.12 ns)
variance introduced by outliers: 44% (moderately inflated)

benchmarking null.intersection:false
time                 4.077 μs   (4.038 μs .. 4.122 μs)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 4.026 μs   (3.983 μs .. 4.090 μs)
std dev              170.3 ns   (121.3 ns .. 264.2 ns)
variance introduced by outliers: 54% (severely inflated)

benchmarking null.intersection:true
time                 2.527 μs   (2.468 μs .. 2.610 μs)
                     0.996 R²   (0.993 R² .. 0.999 R²)
mean                 2.490 μs   (2.459 μs .. 2.535 μs)
std dev              122.4 ns   (85.89 ns .. 180.2 ns)
variance introduced by outliers: 63% (severely inflated)
Data/IntSet.hs
Data/IntSet/Internal.hs
benchmarks/IntSet.hs
tests/intset-properties.hs