On 03/23/2010 12:08 PM, Fawzi Mohamed wrote:
On 22-mar-10, at 21:04, Andrei Alexandrescu wrote:
Better suggestions are always welcome. For integrals I'm unclear on
what we could use to make things better. (Clearly we could and should
get rid of the extraneous field.)

I like murmurhash, that I what I put into tango, see
http://www.dsource.org/projects/tango/browser/trunk/tango/core/rt/compiler/util/hash.d

all that file is based on freely available code and written by me, and I
give my code with whatever license would be needed.

Thanks, Fawzi, that's great.

I'm trying to collect evidence of MurmurHash's effectiveness versus Hsieh's SuperFastHash. I seemed to find some:

http://tanjent.livejournal.com/756623.htmlhttp://tanjent.livejournal.com/756623.html

I also found what seems to be a thorough benchmark:

http://www.strchr.com/hash_functions

Looks pretty solid to me. The benchmarks look only at strings, not at typical workloads on void* (e.g. arbitrary objects containing integers and pointers and whatnot). Hsieh's hash is smack in the middle, whereas Murmur2 is fourth, faster by 10%.

I think that the public interface should be exposed (or re-exposed)
somewhere to the outside so that one can easily create efficient hashes
for user defined types.
For example it is nice to be able to chain hash functions (something
that the default one does not allow).

What I'm pushing for as of now is to move the associative array definition from opacity into templated goodies in object_.d.


Andrei

Reply via email to