hashCode vs crypto

Benchmark created on


Setup

function hashCode(str) {
    var hash = 0;
    if (str.length === 0) {
        return hash;
    }
    for (let i = 0; i < str.length; i++) {
        const char = str.charCodeAt(i);
        hash = ((hash << 5) - hash) + char;
        hash |= 0; // Convert to 32bit integer
    }
    return hash;
}

async function digestMessage(message) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message);
  const hash = await crypto.subtle.digest("SHA-1", data);
  return hash;
}

function arrayBufferToHexString(dataBuffer) {
  const dataArray = Array.from(new Uint8Array(dataBuffer));
  return dataArray.map(b => b.toString(16).padStart(2, "0")).join("");
}

Test runner

Ready to run.

Testing in
TestOps/sec
HashCode
const str = "http://www.example.com";
const result = hashCode(str);
ready
Cyrpto
(async() => {
	const str = "http://www.example.com";

const result = arrayBufferToHexString(await digestMessage(str));
})();
ready

Revisions

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