steady framerate
Going to use requestAnimationFrame to try and get a steady framerate
by fschwiet
HTML
<div id="results">
JavaScript
// original code by Larry Battle
// Date: Mar 06, 2011
// Purpose: Calculate standard deviation, variance, and average among an array of numbers.
// http://bateru.com/news/2011/03/javascript-standard-deviation-variance-average-functions/
// slightly modified to remove getNumWithSetDec usage
var isArray = function (obj) {
return Object.prototype.toString.call(obj) === "[object Array]";
},
getAverageFromNumArr = function( numArr){
if( !isArray( numArr ) ){ return false; }
var i = numArr.length,
sum = 0;
while( i-- ){
sum += numArr[ i ];
}
return sum / numArr.length;
},
getVariance = function( numArr){
if( !isArray(numArr) ){ return false; }
var avg = getAverageFromNumArr( numArr),
i = numArr.length,
v = 0;
while( i-- ){
v += Math.pow( (numArr[ i ] - avg), 2 );
}
v /= numArr.length;
return v;
},
getStandardDeviation = function( numArr){
if( !isArray(numArr) ){ return false; }
var stdDev = Math.sqrt( getVariance( numArr) );
return stdDev;
};
// end of code from Larry Battle
function getSetTimeoutBaseline(msTimeToRun, callback) {
var startTime = window.performance.now();
var lastTime = startTime;
var results = [];
function run() {
var time = window.performance.now();
results.push(time - lastTime);
lastTime = time;
if (time - startTime < msTimeToRun) {
setTimeout(run, 0);
} else {
callback({
average: getAverageFromNumArr(results),
stddev: getStandardDeviation(results)
});
}
}
setTimeout(run, 0);
}
var intendedFPS = 24;
var intendedDelay = 1000 / intendedFPS;
var constantSlop = 0;
var allowedSlop = 0;
var msToRunTest = 5000;
var firstTime;
var lastTime;
var results = [];
var...