Timer resolution test

by rgrove

HTML

<strong>Average setTimeout resolution:</strong>
<span id="result"></span>ms

JavaScript

var count   = 0,
    result  = document.getElementById('result'),
    total   = 0,
    lastTime;

setTimeout(log, 0);
setInterval(render, 1000);

function log() {
    setTimeout(log, 0);

    var time = new Date().getTime();

    if (lastTime) {
        count += 1;
        total += (time - lastTime);
    }

    lastTime = time;
}

function render() {
    result.innerHTML = Math.round(total / count);
}