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
function merge(left, right) {
var result = [];
while (left.length > 0 && right.length > 0) {
if (left[0] < right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
return result.concat(left).concat(right);
}
function mergeSort(arr) {
if (arr.length <= 1) {
return arr;
}
var middle = Math.floor(arr.length / 2);
var left = arr.slice(0, middle);
var right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
var pivot = arr.splice(Math.floor(arr.length / 2), 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
function bubbleSort(arr) {
if (arr.length <= 1) {
return arr;
}
for (var i = arr.length - 1; i > 0; i--) {
for (var j = i - 1; j >= 0; j--) {
if (arr[j] < arr[j - 1]) {
var tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
return arr;
}
function selectSort(arr) {
var min, tmp;
for (var i = 0; i < arr.length; i++) {
min = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min != i) {
tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
return arr;
}
function insertSort(arr) {
for (var i = 1; i < arr.length; i++) {
var tmp = arr[i],
j = i;
while (arr[j - 1] > tmp) {
arr[j] = arr[j - 1];
--j;
}
arr[j] = tmp;
}
return arr;
}
function arraySort(arr) {
return arr.sort(function(a, b) {
return a - b;
});
}
function arraySortSingleArgComparator(arr) {
return arr.sort(function(a) {
return a;
});
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Merge Sort |
| ready |
Quick Sort |
| ready |
Bubble Sort |
| ready |
Select Sort |
| ready |
Insert Sort |
| ready |
Array Sort |
| ready |
Array Sort Single Arg Comparator |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.