Judy array
In computer science and software engineering, a Judy array is a complex but very fast associative array data structure for storing and looking up values using integer or string keys. Unlike normal arrays, Judy arrays may be sparse; that is, they may have large ranges of unassigned indices.
Judy arrays are designed to keep the number of processor cache-line fills as low as possible, and the algorithm is internally complex in an attempt to satisfy this goal as often as possible. Due to these cache optimizations, Judy arrays are fast, sometimes even faster than a hash table, especially for very big datasets. Despite Judy arrays being a type of trie, they consume much less memory than hash tables. Also because a Judy array is a trie, it is possible to do an ordered sequential traversal of keys, which is not possible in hash tables.
Roughly speaking, it is similar to a highly-optimised 256-ary trie data structure.[1] To make memory consumption small, Judy array uses more than 20 various compression techniques to compress trie nodes.
Judy arrays are also believed to be less vulnerable to algorithmic complexity attacks.[2]
The Judy array was invented by Doug Baskins and named after his sister.[3]
External links
- Main Judy arrays site
- Programming with Judy: C LanguageJudy
- How Judy arrays work and why they are so fast
- A complete technical description of Judy arrays
- An independent performance comparison of Judy to Hash Tables
References
- ^ Alan Silverstein, "Judy IV Shop Manual", 2002
- ^ Denial of Service via Algorithmic Complexity Attacks
- ^ http://judy.sourceforge.net/