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 based implementation.

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”.