JSFiddle - React, Tailwind, and code Playground
JavaScript
var counts = [100000, 200000, 250000];
var funcs = {
"no try": function(a) {
var lowest = 0;
for (var i = 1; i < a.length; i++) {
if (a[i] < a[lowest]) lowest = i;
}
return lowest;
},
"try": function(a) {
var lowest = 0;
try{
for (var i = 1; i < a.length; i++) {
if (a[i] < a[lowest]) lowest = i;
}
}catch(e)
{}
return lowest;
}
};
var random = {
"doubles": function(a) {
for (var i = 0; i < a.length; i++) {
a[i] = Math.random();
}
},
"ints": function(a) {
for (var i = 0; i < a.length; i++) {
a[i] = Math.floor(Math.random() * 1000000000);
}
}
};
var text = "Relative running time per array element\nElements\t";
for (var i in funcs) {
text += i + "\t";
}
text += "\n" + navigator.userAgent + "\n";
for (var i = 0; i < counts.length; i++) {
var a = new Array(counts[i]);
var keys = Object.keys(random);
for (var j = 0; j < keys.length; j++) {
text += counts[i] + " " + keys[j] + "\t";
random[keys[j]](a);
for (var k in funcs) {
var time = 0;
for (var l = 0; l < 100; l++) {
var err = false;
var now = new Date().valueOf();
try {
funcs[k](a);
} catch(e) {
err = true;
}
time += new Date().valueOf() - now;
if (err) {
break;
}
}
if (err) {
text += "ERROR\t";
} else {
text += time / 100 + "\t";
}
}
text += "\n";
}
}
var pre = document.createElement("pre");
pre.innerText = pre.textContent = text;
document.body.appendChild(pre);