The perfect hash function generator
gperf reads a set of
“keywords” from an input file (or from the standard input by
default). It attempts to derive a perfect hashing function that
recognizes a member of the static keyword set with at most a
single probe into the lookup table. If
gperf succeeds in
generating such a function it produces a pair of C source code routines
that perform hashing and table lookup recognition. All generated C code
is directed to the standard output. Command-line options described
below allow you to modify the input and output format to
gperf attempts to produce time-efficient code, with
less emphasis on efficient space utilization. However, several options
exist that permit trading-off execution time for storage space and vice
versa. In particular, expanding the generated table size produces a
sparse search structure, generally yielding faster searches.
Conversely, you can direct
gperf to utilize a C
statement scheme that minimizes data space storage size. Furthermore,
using a C
switch may actually speed up the keyword retrieval time
somewhat. Actual results depend on your C compiler, of course.
gperf assigns values to the bytes it is using
for hashing until some set of values gives each keyword a unique value.
A helpful heuristic is that the larger the hash value range, the easier
it is for
gperf to find and generate a perfect hash function.
Experimentation is the key to getting the most from