Adler32 / SHA-512 Speed Test
by skibulk
JavaScript
console.clear();
// Caution: str must be a string
function adler32(str) {
var i = 0, l = str.length, s1 = 1, s2 = 0;
for (; i < l; i++) {
s1 = (s1 + str.charCodeAt(i)) % 65521;
s2 = (s2 + s1) % 65521;
}
return ((s2 << 16) + s1).toString(16).padStart(8, '0');
}
var i = 0;
var seed = "180b041d";
var start = Date.now();
for(; i<50000; i++) seed = adler32(seed);
var stop = Date.now();
console.log( (stop-start)/1000000, seed);
// ---------------------------------------
// Caution: str must be a string
var dict = [];
for(var i=0; i<128; i++) dict[String.fromCharCode(i)] = i;
function adler32_dict(str) {
var i = 0, l = str.length, s1 = 1, s2 = 0;
for (; i < l; i++) {
s1 = (s1 + dict[str[i]]) % 65521;
s2 = (s2 + s1) % 65521;
}
return ((s2 << 16) + s1).toString(16).padStart(8, '0');
}
var i = 0;
var seed = "180b041d";
var start = Date.now();
for(; i<50000; i++) seed = adler32_dict(seed);
var stop = Date.now();
console.log( (stop-start)/1000000, seed);
// ---------------------------------------
async function sha512(message) {
// encode as UTF-8
const msgBuffer = new TextEncoder().encode(message);
// hash the message
const hashBuffer = await crypto.subtle.digest('SHA-512', msgBuffer);
// convert ArrayBuffer to Array
const hashArray = Array.from(new Uint8Array(hashBuffer));
// convert bytes to hex string
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
return hashHex;
}
var i = 0;
var seed = "2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b";
var start = Date.now();
runB();
function runB(){
sha512(seed).then(function(result){
seed = result;
if( i < 50000 ){
i++;
runB();
} else {
var stop = Date.now();
console.log( (stop-start)/1000000, seed);
}
});
}