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);