32-bit hash-small (v3)

Revision 3 of this benchmark created by Martin Wendt on


Description

Compare 32-bit hashing algorithms

See http://stackoverflow.com/q/7616461/19166

Preparation HTML

<script src="https://rawgithub.com/garycourt/murmurhash-js/master/murmurhash3_gc.js"></script>

Setup

function hashJavaDJB2(str) {
        var hash = 0, i, char;
        if (str == 0) return hash;
        for (i = 0, l = str.length; i < l; i++) {
            char  = str.charCodeAt(i);
            hash  = ((hash<<5)-hash)+char;
            hash |= 0; // Convert to 32bit integer
        }
        return hash;
    };
    
    
    function hashFnv32a(str) {
        /*jshint bitwise:false */
        var i, l,
                hval = 0x811c9dc5;
    
        for (i = 0, l = str.length; i < l; i++) {
                hval ^= str.charCodeAt(i);
                hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
        }
        return hval >>> 0;
    }
    
    this.text = "foobar";

Test runner

Ready to run.

Testing in
TestOps/sec
murmur3
return murmurhash3_32_gc(this.text);
ready
hashFnv32a
return hashFnv32a(this.text);
ready
Java's toHash
return hashJavaDJB2(this.text);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Martin Wendt on
  • Revision 3: published by Martin Wendt on