hashStringToNumber

Benchmark created on


Setup

function makeid(length) {
    let result = '';
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const charactersLength = characters.length;
    let counter = 0;
    while (counter < length) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
      counter += 1;
    }
    return result;
}


function hashStringToNumber(str) {
    let nr = 0;
    const len = str.length;
    for (let i = 0; i < len; i++) {
        nr = nr + str.charCodeAt(i);
    }
    return nr;
}

function hashStringToNumberBinary(str) {
    let nr = 0;
    const len = str.length;
    for (let i = 0; i < len; i++) {
        nr = nr + str.charCodeAt(i);
        nr |= 0; // Convert to 32bit integer, improves performance
    }
    return nr;
}

function onlySecond(str) {
    let nr = 0;
    const len = str.length;
    for (let i = 0; i < len; i = i+2) {
        nr = nr + str.charCodeAt(i);
    }
    return nr;
}

const strings = new Array(100000).map(() => makeId(10));

Test runner

Ready to run.

Testing in
TestOps/sec
hashStringToNumber
strings.map(str => hashStringToNumber(str))
ready
hashStringToNumberBinary
strings.map(str => hashStringToNumberBinary(str))
ready
onlySecond
strings.map(str => onlySecond(str))
ready

Revisions

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