Delayed Mouse Tracking
JavaScript
var array = new Array();
for (var i = 0; i < 10000000; i++) { array.push(1); }
function output(diff, val, title) {
document.write( '<div style="margin-bottom:1em;">'
+ '<div style="font-weight:bold;">'
+ (title||"")
+ '</div>'
+ '<div>sum: ' + val + '</div>'
+ '<div>time: ' + diff + '</div>'
+ '</div>'
);
}
var start = (new Date).getTime(), diff = 0;
var sum = 0;
for (var i = 0; i < array.length; i++) { sum = sum + array[i]; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Standard');
var start = (new Date).getTime(), diff = 0;
var sum = 0;
for (var i = 0, n = array.length; i < n; i++) { sum += array[i]; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Length Caching (forward)');
var start = (new Date).getTime(), diff = 0;
var sum = 0;
for (var i = 0, n = array.length; n > i; n--) { sum += array[i]; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Length Caching (reverse)');
var start = (new Date).getTime(), diff = 0;
var sum = array.reduce(function(pv, cv) { return pv + cv;}, 0);
diff = (new Date).getTime() - start;
output(diff, sum, 'Array.reduce Function');
var start = (new Date).getTime(), diff = 0;
var sum = 0;
for (var i = 0, node; node = array[i++];) { sum += node; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Element Assignment (forward)');
var start = (new Date).getTime(), diff = 0;
var sum = 0;
for (var i=array.length-1, node; node = array[i--];) { sum += node; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Element Assignment (reverse)');
var start = (new Date).getTime(), diff = 0;
sum = 0;
for (var i = array.length; i--;) { sum += array[i]; }
diff = (new Date).getTime() - start;
output(diff, sum, 'For Loop: Length Traversal (reverse)');
var start = (new Date).getTime(), diff =...