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>
var loopLen = 0x100000; // 1,048,576
var h32 = new Uint32Array(loopLen);
var loop_asm = (function(std, ffi, heap) {
"use asm";
var heap32 = new std.Uint32Array(heap);
var heapLen = ffi.heapLen;
function loop() {
var i = 0;
var hLen = 0;
hLen = (heapLen() | 0) << 2;
while (1) {
heap32[i >> 2] = i >> 2;
i = i + 4 | 0;
if (i >>> 0 == hLen >>> 0) {
break;
}
}
}
return {
loop: loop
};
})(window, {
heapLen: function() {
return loopLen;
}
}, h32.buffer).loop;
var loop_asm_without_pragma = (function(std, ffi, heap) {
var heap32 = new std.Uint32Array(heap);
var heapLen = ffi.heapLen;
function loop() {
var i = 0;
var hLen = 0;
hLen = (heapLen() | 0) << 2;
while (1) {
heap32[i >> 2] = i >> 2;
i = i + 4 | 0;
if (i >>> 0 == hLen >>> 0) {
break;
}
}
}
return {
loop: loop
};
})(window, {
heapLen: function() {
return loopLen;
}
}, h32.buffer).loop;
var loop_closure = (function(heap) {
var heap32 = new Uint32Array(heap);
var heapLen = heap32.length;
function loop() {
for (var i = 0, hLen = heapLen; i < hLen; i++) {
heap32[i] = i;
}
}
return {
loop: loop
};
})(h32.buffer).loop;
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
loop - native |
| ready |
loop - asm |
| ready |
loop - asm without pragma |
| ready |
loop - closure |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.