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
This demonstrates how reducing data dependency bottlenecks can cause code to run faster by allowing for instruction-level parallelism.
function sumsSquaresBasic(array) {
let total = 0;
for (let i = 0; i < array.length; i++) {
total += array[i] * array[i];
}
return total;
}
function sumsSquaresParallel2(array) {
let total1 = 0;
let total2 = 0;
for (let i = 0; i < array.length; i += 2) {
total1 += array[i] * array[i];
total2 += array[i + 1] * array[i + 1];
}
return total1 + total2;
}
function sumsSquaresParallel4(array) {
let total1 = 0;
let total2 = 0;
let total3 = 0;
let total4 = 0;
for (let i = 0; i < array.length; i += 4) {
total1 += array[i] * array[i];
total2 += array[i + 1] * array[i + 1];
total3 += array[i + 2] * array[i + 2];
total4 += array[i + 3] * array[i + 3];
}
return total1 + total2 + total3 + total4;
}
function sumsSquaresParallel8(array) {
let total1 = 0;
let total2 = 0;
let total3 = 0;
let total4 = 0;
let total5 = 0;
let total6 = 0;
let total7 = 0;
let total8 = 0;
for (let i = 0; i < array.length; i += 8) {
total1 += array[i] * array[i];
total2 += array[i + 1] * array[i + 1];
total3 += array[i + 2] * array[i + 2];
total4 += array[i + 3] * array[i + 3];
total5 += array[i + 4] * array[i + 4];
total6 += array[i + 5] * array[i + 5];
total7 += array[i + 6] * array[i + 6];
total8 += array[i + 7] * array[i + 7];
}
return total1 + total2 + total3 + total4
+ total5 + total6 + total7 + total8;
}
function generateArray(length) {
let array = [];
for (let i = 0; i < length; i++) {
array.push(Math.random());
}
return array;
}
let testArray1 = generateArray(8 * 100);
let testArray2 = generateArray(8 * 1000);
let testArray3 = generateArray(8 * 10000);
let testArray4 = generateArray(8 * 100000);
Ready to run.
Test | Ops/sec | |
---|---|---|
Basic |
| ready |
2x Parallel |
| ready |
4x Parallel |
| ready |
8x Parallel |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.