Judy(3X) Judy(3X)

NAME
Judy functions - C libraries for creating and accessing dynamic arrays

SYNOPSIS

Judy1  - maps an Index (word) to a bit
JudyL  - maps an Index (word) to a word
JudySL - maps an Index (string) to a word

DESCRIPTION
The Judy family of functions supports fully dynamic arrays. These arrays may be indexed by a 32- or 64-bit word (depending on the processor) or a string. A dynamic array that is sparsely populated can be thought of as a mapping function. There are 3 different Judy mappings currently supported:
Judy1 maps an Index (word) to a bit.
JudyL maps an Index (word) to a word.
JudySL maps an Index (string) to a word.

For Judy1 functions and JudyL functions, Index should be declared as a Word_t type. Word_t is defined in the Judy.h header file as a 32- or 64-bit unsigned native integer, and has the same number of bits as a pointer.

For JudySL functions, each index is a null-terminated string.

Judy arrays are both speed- and memory-efficient, with no tuning or configuration required, across a wide range of index set types (sequential, periodic, clustered, random). Judy's speed and memory usage are typically better than other data storage models such as skiplists, binary trees, b-trees, or even hashing, and improves with very large data sets.

A Judy array is created merely by defining a null pointer and then storing (inserting) the first element into the array under that pointer. The memory used by a Judy array is proportional to the population (number of elements).

Judy has two Application Program Interfaces (APIs): a C macro interface, and a function call interface. Because the macro forms are faster and have a simpler error handling interface than the equivalent functions, they are the preferred way of calling the Judy functions.

Since an initial (empty) Judy array is represented by a null pointer, it is possible to construct an array of Judy arrays. In other words, a Judy array's values (except Judy1) can be pointers to other Judy arrays.

AUTHOR
Judy was invented by Doug Baskins and implemented by Hewlett-Packard. (Note: Judy is named for the inventor's sister.)

FILES
Locations of interest include:

/usr/share/doc/Judy/
Documents, including HTML versions of the manual entries.
/usr/share/doc/Judy/demo/
Demonstration program source files.

SEE ALSO
Judy1(3X), JudyL(3X), JudySL(3X),
the Judy website, http://www.sourcejudy.com/, for more information and Application Notes.