Expand description
IDLSet - Fast u64 integer set operations
IDLSet is a specialised library for fast logical set operations on
u64. For example, this means union (or), intersection (and) and not
operations on sets. In the best case, speed ups of 15x have been observed
with the general case performing approximately 4x faster that a Vec
These operations are heavily used in low-level implementations of databases for their indexing logic, but has applications with statistical analysis and other domains that require logical set operations.
Modules
Version 1 of IDLSet - This is a compressed-only version of the library. This should be used when you know your data set is always large and compresses well. There are a number of cases where with small (IE less than 8) items from one set interacting with a larger set (IE thousands of items) that uncompressed indexes will perform better.
Version 2 of IDLSet - This is a self-adaptive version of the compressed integer
set library, that compresses dynamicly based on heuristics of your data. In the
case that your data is sparse, or a very small set, the data will remain uncompressed.
If your data is dense, then it will be compressed. Depending on the nature of
the operations you use, this means that when intersecting or unioning these
an optimised version for these behaviours can be chosen, significantly improving
performance in general cases over [v1
] (which is always compressed).
Traits
Bit trait representing the equivalent of a & (!b). This allows set operations such as “The set A does not contain any element of set B”.