Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
var arr = null;
function profileFunction(func, description, timesToRun) {
   var elapsedTime = 0;
   for (var i = 0; i < timesToRun; ++i) {
      elapsedTime += profile(func);
   }
   var averageTime = elapsedTime / timesToRun;
   console.log("Average Time for '%s': %i ms (%i Iterations)", description, averageTime, timesToRun);
}
function profile(func) {
   var start = new Date().getTime();
   func();
   var elapsedTime = (new Date().getTime()) - start;    
   return elapsedTime;
}
function whileLoopCached() {
   var i = 0, arrLength = arr.length;
   while (i < arrLength) { arr[i]; i++; }
}
function reverseWhileLoop() {
   var i = arr.length; 
   while (i--) { arr[i]; }
}
function oldAndBusted() {
   for (var i = 0; i < arr.length; ++i) { arr[i]; }
}
function oldAndBustedCached() {
   var arrLength = arr.length;
   for (var i = 0; i < arrLength; ++i) { arr[i]; }
}
function coolGuyLoop() {
   for (var i = -1, len = arr.length; ++i < len; ) { arr[i]; } 
}
function coolGuyLoopCached() {
   var arrLength = arr.length;
   for (var i = -1, len = arrLength; ++i < len; ) { arr[i]; } 
}
</script>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
body { background-color: #000; font: 16px Helvetica, Arial; color: #fff; }
</style>
</head>
<body>
   <h3>JavaScript Loop Profiling</h3>
   <p>Number of Iterations</p>
   <input id='numberOfIterations' type='text' value='100' />
   <p>Array Length</p>
   <input id='arrayLength' type='text' value='1000000' />
   <button>Profile</button>
   <script type='text/javascript'>
   $('button').click(function() {
      var numberOfIterations = parseInt($('#numberOfIterations').val());
      var arrayLength = parseInt($('#arrayLength').val());
      arr = new Array(arrayLength);
      
      profileFunction(oldAndBusted, 'old and busted', numberOfIterations);
      profileFunction(oldAndBustedCached, 'old and busted cached', numberOfIterations);
      profileFunction(coolGuyLoop, 'the cool guy loop', numberOfIterations);
      profileFunction(coolGuyLoopCached, 'the cool guy loop cached', numberOfIterations);   
      profileFunction(whileLoopCached, 'while loop cached', numberOfIterations);
      profileFunction(reverseWhileLoop, 'reverse while loop', numberOfIterations);
   });
   </script>
</body>
</html>
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers