djbhash

Benchmark created on


Description

<script> Benchmark.prototype.setup = function() { // Build a lot of average length string to test on

var strs=[];

var strbuff = 'a';
for (var i = 0; i < 1000; i++) {
  var lc = strbuff.charAt(strbuff.length - 1);
  if (lc == 9) {
    strbuff += 'a';
  } else if (lc == 'z') {
    strbuff = strbuff.substr(0,strbuff.length -1);
    strbuff += 'A';
  } else if (lc == 'Z') {
    strbuff = strbuff.substr(0,strbuff.length -1);
    strbuff += '0';
  } else {
    strbuff = strbuff.substr(0,strbuff.length -1);
    strbuff += String.fromCharCode(lc.charCodeAt(0)+1);
  }
  strs.push(strbuff);        
}

function DJBHash(str) {
    var hash = 5381;

    for(var i = 0; i < str.length; i++) {
        hash = 33 * hash + str.charCodeAt(i);
    }

    return hash;
}

function DJBHashOpt(str) { var hash = 5381;

    for(var i = 0, l = str.length; i < l; i++) {
        hash = ((hash << 5) + hash) + str.charCodeAt(i);
    }

    return hash;
}

}; </script>

Test runner

Ready to run.

Testing in
TestOps/sec
simple
DJBHash('abcdefghijklmnopqrstuvwxyz');
ready
optimized
DJBHashOpt('abcdefghijklmnopqrstuvwxyz');
ready

Revisions

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