Skip to content

Instantly share code, notes, and snippets.

@fernandojsg
Last active April 5, 2018 15:53
Show Gist options
  • Save fernandojsg/48f681e55b54ccc3498c2d78df1fde03 to your computer and use it in GitHub Desktop.
Save fernandojsg/48f681e55b54ccc3498c2d78df1fde03 to your computer and use it in GitHub Desktop.
Timing
//-----------------------------------------------------------------------------
// Loop measuring delta and total time with perf.now()
//-----------------------------------------------------------------------------
var prevTime = performance.now();
var total = 0;
for (var i=0;i< 1000; i++) {
var newTime = performance.now();
var delta = newTime - prevTime;
total += delta;
prevTime = newTime;
console.log(delta);
}
console.log(total);
//-----------------------------------------------------------------------------
// RAF using timestamp and performance.now
//-----------------------------------------------------------------------------
var prevTimeStamp, prevTimeNow, prevTimeAudio;
var first = true;
var totalTimeStamp = 0;
var totalTimeNow = 0;
var totalTimeAudio = 0;
var frames = 0;
var audioCtx = new AudioContext();
function updateDelta(timeStamp) {
if (first) {
prevTimeStamp = timeStamp;
prevTimeNow = performance.now();
prevTimeAudio = audioCtx.currentTime * 1000;
first = false;
}
var newTimeNow = performance.now();
var newTimeAudio = audioCtx.currentTime * 1000;
var deltaTimeStamp = timeStamp - prevTimeStamp;
var deltaTimeNow = newTimeNow - prevTimeNow;
var deltaTimeAudio = newTimeAudio - prevTimeAudio;
totalTimeNow += deltaTimeNow;
totalTimeStamp += deltaTimeStamp;
totalTimeAudio += deltaTimeAudio;
prevTimeNow = newTimeNow;
prevTimeStamp = timeStamp;
prevTimeAudio = newTimeAudio;
frames++;
console.log('perf.now():', deltaTimeNow, 'raf.timestamp', deltaTimeStamp, 'audio', deltaTimeAudio);
if (frames <= 60) {
requestAnimationFrame(updateDelta);
} else {
console.log(`TOTAL. perf.now() = ${totalTimeNow}, raf.timestamp = ${totalTimeStamp}, audio = ${totalTimeAudio}`);
}
}
requestAnimationFrame(updateDelta);
//-----------------------------------------------------------------------------
// Loop measuring how long takes a function
//-----------------------------------------------------------------------------
var prevTimeAll = performance.now();
var totalA = totalB = 0;
function fun () {
for (var i=0;i<100;i++) { Math.sin(i); }
}
for (var i=0;i< 100000; i++) {
prevTime = performance.now();
fun();
totalA += performance.now() - prevTime;
prevTime = performance.now();
fun();
totalB += performance.now() - prevTime;
}
var totalAll = performance.now() - prevTimeAll;
console.log('total', totalAll, 'totalA', totalA, 'totalB', totalB, 'totalA+B', totalA+totalB);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment