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
var multidimensional_array_create = function(size) {
var array_4d = new Array(size);
for(var x = 0; x < size; x++) {
array_4d[x] = new Array(size);
var array_4d_x = array_4d[x];
for(var y = 0; y < size; y++) {
array_4d_x[y] = new Array(size);
var array_4d_y = array_4d_x[y];
for(var z = 0; z < size; z++) {
array_4d_y[z] = new Array(size);
var array_4d_z = array_4d_y[z];
for(var i = 0; i < size; i++) {
array_4d_z[i] = i + 1;
}
}
}
}
return array_4d;
};
var multidimensional_array_read = function(size, array_4d) {
var sum = 0;
for(var x = 0; x < size; x++) {
var array_4d_x = array_4d[x];
for(var y = 0; y < size; y++) {
var array_4d_y = array_4d_x[y];
for(var z = 0; z < size; z++) {
var array_4d_z = array_4d_y[z];
for(var i = 0; i < size; i++) {
sum += array_4d_z[i];
}
}
}
}
return sum;
};
var multidimensional_array_write = function(size, array_4d) {
for(var x = 0; x < size; x++) {
var array_4d_x = array_4d[x];
for(var y = 0; y < size; y++) {
var array_4d_y = array_4d_x[y];
for(var z = 0; z < size; z++) {
var array_4d_z = array_4d_y[z];
for(var i = 0; i < size; i++) {
array_4d_z[i] += 10;
}
}
}
}
};
var inline_array_create = function(size) {
var array_4d = new Array(size * size * size * size);
var size3 = size * size * size;
var size2 = size * size;
for(var x = 0; x < size; x++) {
var x_offset = x * size3;
for(var y = 0; y < size; y++) {
var y_offset = y * size2 + x_offset;
for(var z = 0; z < size; z++) {
var z_offset = z * size + y_offset;
for(var i = 0; i < size; i++) {
array_4d[i + z_offset] = i + 1;
}
}
}
}
return array_4d;
};
var inline_array_read = function(size, array_4d) {
var sum = 0;
var size2 = size * size;
var size3 = size2 * size;
for(var x = 0; x < size; x++) {
var x_offset = x * size3;
for(var y = 0; y < size; y++) {
var y_offset = y * size2 + x_offset;
for(var z = 0; z < size; z++) {
var z_offset = z * size + y_offset;
for(var i = 0; i < size; i++) {
sum += array_4d[i + z_offset];
}
}
}
}
return sum;
};
var inline_array_write = function(size, array_4d) {
var size2 = size * size;
var size3 = size2 * size;
for(var x = 0; x < size; x++) {
var x_offset = x * size3;
for(var y = 0; y < size; y++) {
var y_offset = y * size2 + x_offset;
for(var z = 0; z < size; z++) {
var z_offset = z * size + y_offset;
for(var i = 0; i < size; i++) {
array_4d[i + z_offset] += 10;
}
}
}
}
};
var multidimensional_array = function() {
for(var size = 1; size <= 32; size *= 2) {
var array = multidimensional_array_create(size);
console.log(size, multidimensional_array_read(size, array));
multidimensional_array_write(size, array);
}
};
var inline_array = function() {
for(var size = 1; size <= 32; size *= 2) {
var array = inline_array_create(size);
console.log(size, inline_array_read(size, array));
inline_array_write(size, array);
}
};
Ready to run.
Test | Ops/sec | |
---|---|---|
Multidimensional array |
| ready |
Inline array |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.