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
<script src="//www.flownet.com/ron/code/curve25519.js"></script>
<script src="//rawgithub.com/tonyg/js-nacl/master/lib/nacl.js"></script>
<script src="//crypto.stanford.edu/sjcl/sjcl.js"></script>
<script src="//crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script>
var data = 'XXcpLdZSshmKlTBGdNDsHSRXUhOrMvOHPVscATocLtpqPmbeROOLFPSywaeASQFAWexMKdkGRmEvoSeYsNtyCPpQfWioYEZMGcefXDrxKTGdtCGJFaetDQvudVdkmJMlUoDNjNaBKRanDOrwbBBZxnzeqtPljtFgsQJWRiwprwemQaTZrhLLwycyuRFoLzPqvgWTnHdKszsiyQEvulfevLDddCKMDevgXpEkQpvkZxiOXertwrAPplqPqGBGJianONMvtBjCvEnCQaMuImqfUDPPAmLxPbVOgNvMlfKIZOjVurTRRFLFvvokVxhEICLfFHtmLkkhnCmdxTJrzrhGonCdAfreEDsqkPkokMbCBhjFyDeesKofowXutFDtrGHWtAyafssxtNRaniORXAUdKvUEHjmNFDyskzMzticEuIKoWqQkMAoshtDBXEZpjnjiucIQUDhnEszAnZlYaunwFXgwRXAdDzwkWjkRsioIkywffJpbKsiuMayckobjSgqfSOAfFiCooSMdDvghRXvbnumesqStVuntcpowaokhMvSGRGWIsihZllpaGBUqpNF';
var keccakCC = function() {
var d, h, e, l, k, m, n, p;
e = function(a, b) {
this.b = a ? a : 0;
this.a = b ? b : 0
};
e.e = function(a) {
return new e(a.b, a.a)
};
e.prototype = {
d: function(a) {
this.b ^= a.b;
this.a ^= a.a;
return this
},
h: function() {
return new e(~this.b, ~this.a)
},
g: function(a) {
this.b &= a.b;
this.a &= a.a;
return this
},
f: function(a) {
var b, c;
32 <= a && (b = this.b, this.b = this.a, this.a = b, a -= 32);
if (0 === a) return this;
c = 32 - a;
b = (this.a << a) + (this.b >>> c);
this.b = (this.b << a) + (this.a >>> c);
this.a = b;
return this
},
toString: function() {
var a, b;
a = function(a) {
return ("00" +
a.toString(16)).slice(-2)
};
b = function(b) {
return a(b & 255) + a(b >>> 8) + a(b >>> 16) + a(b >>> 24)
};
return function() {
return b(this.b) + b(this.a)
}
}()
};
k = function(a) {
var b, c = [];
for (b = 0; b < a; b += 1) c[b] = new e(0, 0);
return c
};
h = function(a) {
function b(a, d) {
return b.c[a % 5 + 5 * (d % 5)]
}
b.c = a;
b.e = function() {
return new h(b.c.map(e.e))
};
return b
};
l = [0, 10, 20, 5, 15, 16, 1, 11, 21, 6, 7, 17, 2, 12, 22, 23, 8, 18, 3, 13, 14, 24, 9, 19, 4];
m = [{
b: 1,
a: 0
}, {
b: 32898,
a: 0
}, {
b: 32906,
a: 2147483648
}, {
b: 2147516416,
a: 2147483648
}, {
b: 32907,
a: 0
}, {
b: 2147483649,
a: 0
}, {
b: 2147516545,
a: 2147483648
}, {
b: 32777,
a: 2147483648
}, {
b: 138,
a: 0
}, {
b: 136,
a: 0
}, {
b: 2147516425,
a: 0
}, {
b: 2147483658,
a: 0
}, {
b: 2147516555,
a: 0
}, {
b: 139,
a: 2147483648
}, {
b: 32905,
a: 2147483648
}, {
b: 32771,
a: 2147483648
}, {
b: 32770,
a: 2147483648
}, {
b: 128,
a: 2147483648
}, {
b: 32778,
a: 0
}, {
b: 2147483658,
a: 2147483648
}, {
b: 2147516545,
a: 2147483648
}, {
b: 32896,
a: 2147483648
}, {
b: 2147483649,
a: 0
}, {
b: 2147516424,
a: 2147483648
}];
n = [0, 1, 62, 28, 27, 36, 44, 6, 55, 20, 3, 10, 43, 25, 39, 41, 45, 15, 21, 8, 18, 2, 61, 56, 14];
p = function() {
var a, b, c, f, g;
for (g = 0; 24 > g; g += 1) {
c = k(5);
for (a =
0; 5 > a; a += 1)
for (b = 0; 5 > b; b += 1) c[a].d(d(a, b));
f = c.map(e.e);
f = f.concat(f.splice(0, 1));
for (a = 0; 5 > a; a += 1) f[a].f(1).d(c[(a + 4) % 5]);
for (a = 0; 5 > a; a += 1)
for (b = 0; 5 > b; b += 1) d(a, b).d(f[a]);
for (a = 0; 5 > a; a += 1)
for (b = 0; 5 > b; b += 1) d(a, b).f(n[5 * b + a]);
b = d.c.slice(0);
for (a = 0; 25 > a; a += 1) d.c[l[a]] = b[a];
c = d.e();
for (a = 0; 5 > a; a += 1)
for (b = 0; 5 > b; b += 1) d(a, b).d(c(a + 1, b).h().g(c(a + 2, b)));
d(0, 0).d(m[g])
}
};
return function(a) {
d = new h(k(25));
for (a += "\u2001\u0188"; 0 !== a.length % 68;) a += "\x00";
var b, c;
for (b = 0; b < a.length; b += 68) {
for (c = 0; 68 > c; c += 4) d.c[c /
4].d(new e(a.charCodeAt(b + c) + 65536 * a.charCodeAt(b + c + 1), a.charCodeAt(b + c + 2) + 65536 * a.charCodeAt(b + c + 3)));
p()
}
return d.c.slice(0, 4).join("")
}
}();
Ready to run.
Test | Ops/sec | |
---|---|---|
nacl |
| ready |
sjcl |
| ready |
curve25519 |
| ready |
CryptoJS |
| ready |
KeccakCC |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.