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
stevenbarragan = function(array) {
return array.length == 0 || array.length == 1 ? array : [].concat(
array.shift(),
array.map(function(_, i) {
return array[i].pop();
}),
array.pop().reverse(),
array.map(function(_, i) {
return array[i].shift();
}).reverse(),
stevenbarragan(array)
);
}
haan = function(n) {
var i_snail = function(n, x, y) {
var result = [];
for (var i = x; i <= y; i++) {
result.push(n[x][i]);
}
for (var i = x + 1; i <= y; i++) {
result.push(n[i][y]);
}
for (var i = y - 1; i >= x; i--) {
result.push(n[y][i]);
}
for (var i = y - 1; i >= x + 1; i--) {
result.push(n[i][x]);
}
if (x < y) {
return result.concat(i_snail(n, x + 1, y - 1));
} else {
return result;
}
}
return i_snail(n, 0, n[0].length - 1);
}
weizuo = function(a) {
var r = [],
b = 0,
e = a.length - 1,
i;
while (b < e) {
for (i = b; i < e; i++) r.push(a[b][i]);
for (i = b; i < e; i++) r.push(a[i][e]);
for (i = e; i > b; i--) r.push(a[e][i]);
for (i = e; i > b; i--) r.push(a[i][b]);
b++;
e--;
}
if (b == e) r.push(a[b][b]);
return r;
}
jerryimba = function(array) {
var opt = [];
for (var i = 0, l = Math.ceil(array.length / 2); i < l; i++) {
opt = opt.concat(array.shift());
for (var j = 0; j < array.length - 1; j++) {
opt.push(array[j].pop());
}
array.length > 0 ? opt = opt.concat(array.pop().reverse()) : 0;
for (var j = array.length - 1; j >= 0; j--) {
opt.push(array[j].shift());
}
}
return opt;
}
liangbo = function snail(_array) {
var resultArray = new Array();
var index = 0;
function mySnail(_array) {
// 如果该数组只有一个元素
if (_array.length == 1) {
resultArray[index] = _array[0][0];
index++;
//console.log(_array[0][0]);
} else {
for (var i = 0; i < _array.length; i++) {
if (i == 0) {
// 第一行
for (var j = 0; j < _array[1].length; j++) {
resultArray[index] = _array[i][j];
index++;
//console.log(_array[i][j]);
}
} else {
// 最右列
resultArray[index] = _array[i][_array[i].length - 1];
index++;
//console.log(_array[i][_array[i].length - 1]);
// 最后一行
if (i == _array.length - 1) {
for (var j = _array[_array.length - 1].length - 2; j >= 0; j--) {
resultArray[index] = _array[i][j];
index++;
//console.log(_array[i][j]);
}
}
}
}
// 第一列
for (var i = _array.length - 2; i > 0; i--) {
resultArray[index] = _array[i][0];
index++;
//console.log(_array[i][0]);
}
// 如果原数组长度大于3
if (_array.length >= 3) {
var subArray = new Array(_array.length - 2);
for (var i = 0; i < subArray.length; i++) {
subArray[i] = new Array(_array.length - 2);
for (var j = 0; j < subArray[i].length; j++) {
subArray[i][j] = _array[i + 1][j + 1];
}
}
mySnail(subArray);
}
}
return resultArray;
}
mySnail(_array);
return resultArray;
}
real_liangbo = function snail(_array) {
var resultArray = new Array();
var x1 = 0;
var y1 = 0;
var x2 = _array.length - 1;
var y2 = 0;
var x3 = _array.length - 1;
var y3 = _array.length - 1;
var x4 = 0;
var y4 = _array.length - 1;
if (_array.length == 1) {
resultArray.push(_array[0]);
} else {
while (true) {
for (var i = x1; i < x2; i++) {
resultArray.push(_array[y1][i]);
}
for (var i = y2; i < y3; i++) {
resultArray.push(_array[i][x2]);
}
for (var i = x3; i > x4; i--) {
resultArray.push(_array[y3][i]);
}
for (var i = y4; i > y1; i--) {
resultArray.push(_array[i][x4]);
}
x1++;
y1++;
if (_array.length % 2 == 0 && y1 == y3) {
break;
}
x2--;
y2++;
x3--;
y3--;
x4++;
y4--;
if (_array.length % 2 != 0 && y1 == y3) {
resultArray.push(_array[y1][x1]);
break;
}
}
}
return resultArray;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
stevenbarragan |
| ready |
haan |
| ready |
weizuo |
| ready |
jerryimba |
| ready |
52liangbo |
| ready |
real_liangbo |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.