Hashing strings

Benchmark created by Jelle De Loecker on


Setup

function bitwise(str){
      var hash = 0;
      if (str.length == 0) return hash;
      for (i = 0; i < str.length; i++) {
          char = str.charCodeAt(i);
          hash = ((hash<<5)-hash)+char;
      }
      return hash;
  }
  
  function numbers(str) {
     var res = 0,
         len = str.length;
     for (var i = 0; i < len; i++) {
      res = res * 31 + str.charCodeAt(i);
     }
     return res;
    }
  
  function bitwiseconv(str){
      var hash = 0;
      if (str.length == 0) return hash;
      for (i = 0; i < str.length; i++) {
          char = str.charCodeAt(i);
          hash = ((hash<<5)-hash)+char;
          hash = hash & hash; // Convert to 32bit integer
      }
      return hash;
  }
  
  function numbersconv(str) {
     var res = 0,
         len = str.length;
     for (var i = 0; i < len; i++) {
      res = res * 31 + str.charCodeAt(i);
      res = res & res;
     }
     return res;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
Bitwise based function (No integer conversion)
bitwise('[LOG] This is a a not-too-long log message, once that will commonly pop up in my application');
ready
Number based function (No integer conversion)
numbers('[LOG] This is a a not-too-long log message, once that will commonly pop up in my application');
ready
Bitwise based function
bitwiseconv('[LOG] This is a a not-too-long log message, once that will commonly pop up in my application');
ready
Number based function
numbersconv('[LOG] This is a a not-too-long log message, once that will commonly pop up in my application');
ready

Revisions

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