jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
Looking for the fastest hash function to get a unique id of a string.
// Erwin Haantjes, optimize code and use while loops
function bitwise(str){
var hash = 0,i=(str && str.length)?str.length:0;
while(i--) { hash = ((hash<<5)-hash)+str.charCodeAt(i); }
return hash;
}
function numbers(str) {
var res = 0,i=(str && str.length)?str.length:0;
while(i--) { res = res * 31 + str.charCodeAt(i); }
return res;
}
function dodgyNumbers(str) {
var res = 0,i=(str && str.length)?str.length:0;
while(i -= 4 > 0) { res = res * 31 + str.charCodeAt(i); }
return res;
}
function bitwiseconv(str){
var hash = 0,i=(str && str.length)?str.length:0;
while(i--)
{
hash = ((hash<<5)-hash)+str.charCodeAt(i);
hash = hash & hash; // Convert to 32bit integer
}
return hash;
}
function numbersconv(str) {
for(var res = 0, len = str && str.length || 0, j = 0; j < len; j++){
res = (res * 31 + str.charCodeAt(j)) | 0;
}
return res;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Bitwise based function (No integer conversion) |
| ready |
Number based function (No integer conversion) |
| ready |
Bitwise based function |
| ready |
Number based function |
| ready |
Dodgy numbers |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.