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>
//--------------------------------------------------
// simple impl
//--------------------------------------------------
function adler32_simple(array) {
return adler32_simple_update(1, array);
}
function adler32_simple_update(adler, array) {
var s1 = adler & 0xffff,
s2 = (adler >>> 16) & 0xffff;
for (var i = 0, l = array.length; i < l; i++) {
s1 = (s1 + array[i]) % 65521;
s2 = (s2 + s1) % 65521;
}
return ((s2 << 16) | s1) >>> 0;
}
//--------------------------------------------------
// optimized impl
//--------------------------------------------------
function adler32_opti(array) {
return adler32_opti_update(1, array);
}
function adler32_opti_update(adler, array) {
var s1 = adler & 0xffff,
s2 = (adler >>> 16) & 0xffff;
var len = array.length;
var tlen;
var i = 0;
while (len > 0) {
tlen = len > 5550 ? 5550 : len;
len -= tlen;
do {
s1 += array[i++];
s2 += s1;
} while (--tlen);
s1 %= 65521;
s2 %= 65521;
}
return ((s2 << 16) | s1) >>> 0;
}
//--------------------------------------------------
// half optimized impl
//--------------------------------------------------
function adler32_half(array) {
return adler32_half_update(1, array);
}
function adler32_half_update(adler, array) {
var s1 = adler & 0xffff,
s2 = (adler >>> 16) & 0xffff;
var len = array.length;
var tlen;
var i = 0;
while (len > 0) {
tlen = len > 2775 ? 2775 : len;
len -= tlen;
do {
s1 += array[i++];
s2 += s1;
} while (--tlen);
s1 %= 65521;
s2 %= 65521;
}
return ((s2 << 16) | s1) >>> 0;
}
</script>
var testData = [];
var num = 100000;
for (var i = 0; i < num; ++i) {
testData[i] = (i * 2) & 0xff;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
simple |
| ready |
opti |
| ready |
half opti |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.