loop runtime
by Meir Gabay
HTML
<div id="myEle">
</div>
<table id='dates'>
</table>
<div id='time'>
</div>
JavaScript
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
var myArr = [];
var myDate = new Date();
var tempDate = null;
var numOfElements = 500000;
for (var i = 0; i < numOfElements; i++) {
tempDate = myDate.addDays(i);
tempDate = tempDate.getFullYear() + "/" + (tempDate.getMonth() + 1) + "/" + tempDate.getDate();
tempDate = new Date(tempDate);
myArr.push(tempDate.valueOf());
}
/*
var myTable = document.getElementById('dates');
var myNode = null;
var myTr = null;
var row = null;
var cell = null;
myArr.forEach(function(val, index) {
row = myTable.insertRow(index); //myNode = document.createTextNode("<td>" + val + "</td>");
cell = row.insertCell(0);
cell.innerHTML = val;
});
*/
var searchIndex = parseInt(Math.random() * (myArr.length-1));
var searchValue = myArr[searchIndex] //1485295200000
var linearTime;
var myIndex;
var j=0, len = myArr.length;
var t2 = 0;
var t3 = 0;
t2 = performance.now();
while( j < len){
if(myArr[j]===searchValue){
myIndex = j;
break;
}
j++;
}
t3 = performance.now();
linearTime = t3 - t2;
console.log("linear time = " + linearTime + " " + myIndex);
var myValue = null;
var fastSearch = function(valueToSearch){
var mid = parseInt(this.length / 2);
if(valueToSearch === this[mid]){
myValue = this[mid];
return myValue;
}
if(valueToSearch < this[mid]){
var newArr = this.slice(0,mid);
if(newArr.length > 0){
newArr.fastSearch(valueToSearch);
}
}
if (valueToSearch > this[mid]){
var newArr = this.slice(mid+1,this.length);
if(newArr.length > 0){
newArr.fastSearch(valueToSearch);
}
}
return myValue;
}
Array.prototype.fastSearch = fastSearch;
var t0 = 0;
var t1 = 0;
t0 = performance.now();
myIndex = myArr.indexOf(searchValue);
//myValue = myArr.fastSearch(searchValue);
t1 = performance.now();
var fastSearchTime = t1-t0;
console.log("indexOf = " + fastSearchTime + " " + myIndex);