Add `disjoint` for Data.Set
authorVíctor López Juan <victor@lopezjuan.com>
Fri, 19 Jan 2018 21:19:00 +0000 (22:19 +0100)
committerVíctor López Juan <victor@lopezjuan.com>
Sun, 21 Jan 2018 16:19:58 +0000 (17:19 +0100)
commit2599afc046b7be70656cf76973111e0cc58e5f85
tree86a05c78bd959c94d5eaef4513f25836f0fb0cc2
parenta1466a51f1a752c685c36dcfd1df7f06e92112a6
Add `disjoint` for Data.Set

This is added mostly for consistency with `IntSet.disjoint`.
Performance also improves compared to the corresponding
`(null.).intersection` implementation.

Benchmark set-benchmarks: RUNNING...
[...]
benchmarking disjoint:false
time                 69.64 ns   (68.87 ns .. 70.69 ns)
                     0.998 R²   (0.997 R² .. 0.999 R²)
mean                 69.39 ns   (68.31 ns .. 70.86 ns)
std dev              3.819 ns   (2.979 ns .. 4.857 ns)
variance introduced by outliers: 75% (severely inflated)

benchmarking disjoint:true
time                 611.5 μs   (606.6 μs .. 618.0 μs)
                     0.999 R²   (0.997 R² .. 1.000 R²)
mean                 620.2 μs   (608.3 μs .. 664.9 μs)
std dev              68.26 μs   (14.09 μs .. 140.9 μs)
variance introduced by outliers: 79% (severely inflated)

benchmarking null.intersection:false
time                 234.9 μs   (227.3 μs .. 241.2 μs)
                     0.995 R²   (0.993 R² .. 0.998 R²)
mean                 218.8 μs   (214.7 μs .. 224.3 μs)
std dev              14.66 μs   (11.51 μs .. 18.56 μs)
variance introduced by outliers: 62% (severely inflated)

benchmarking null.intersection:true
time                 732.3 μs   (701.0 μs .. 767.7 μs)
                     0.989 R²   (0.983 R² .. 0.996 R²)
mean                 726.3 μs   (711.1 μs .. 742.9 μs)
std dev              50.46 μs   (38.81 μs .. 63.17 μs)
variance introduced by outliers: 58% (severely inflated)
Data/Set.hs
Data/Set/Internal.hs
benchmarks/Set.hs
tests/set-properties.hs