2006/5/1, Robert May <[EMAIL PROTECTED]>:
I have looked into 3 alternative hashing strategies, all implemented in
XS (as an aside, the overhead of calling an XS function that does
nothing compares very favourably with a perl hash lookup, and so
previous concerns that I had about XS calls being slow seem unfounded):

Strategy 1:  non-order preserving minimal perfect hash, based on the
algorithm and C source from
http://burtleburtle.net/bob/hash/perfect.html  I will call this the
'Perfect' algorithm

Strategy 2:  non-order preserving (non-minimal) perfect hash, generated
using gperf: http://gnuwin32.sourceforge.net/packages/gperf.htm  I will
call this the 'Gperf' algorithm.

Strategy 3: Order-preserving minimal perfect hash. based on the code
from: http://www.ibiblio.org/pub/Linux/devel/lang/c/mph-1.2.tar.gz  I
will call this the 'MPH' algorithm

The original ladder-of-if's found in GUI_constants.cpp will be called
the 'Win32::GUI' algorithm

The current hash implementation discussed here for Win32::GUI::Constants
will be called the 'Hash' algorithm.

Good to see that finally gperf found its successors: Perfect and MPH.
gperf is completely insatisfactory not finding a solution, esp. when
you know that
it comes from a common lisp programmer.

http://burtleburtle.net/bob/hash/perfect.html looks fine. Go for it.

But don't forget to support EXPORT tag groups and wildcards.
use Win32::GUI::Constants qw(!/^T/); #don't export T* constants
--
Reini

Reply via email to