<html>
<head>
<script language="javascript">
var last = new Date(); // The last time we sampled the timer
var total_value = 0; // The sum of the intervals measured
var total_count = 0; // The count of the intervals measured
var last_interval = 1;
function fire() {
var current = new Date();
var ms = current - last;
total_value += ms;
total_count++;
// Display the interval output.
var output = document.getElementById('output');
output.innerHTML = ms + "ms";
// Display the average output.
var average = document.getElementById('average');
average.innerHTML = total_value / total_count + "ms";
// Get the new interval from the input.
var input = document.getElementById('input');
// If the interval has changed, reset our averages.
if (input.value != last_interval) {
total_value = 0;
total_count = 0;
}
last_interval = input.value;
last = new Date();
setTimeout(fire, last_interval);
}
</script>
</head>
<body onload='setTimeout("fire()", 1)'>
<h1>Test JS setTimeout() speed</h1>
This page tests the frequency of setTimeout() in the browser.
Javascript applications use setTimeout() as a mechanism to 'yield'
to the browser so that the browser can repaint. Most browsers
implement a 15ms setTimeout() minimum. Use this to page to measure
setTimeout() lag and discover your browser's minimum interval.<P>
<hr>
Desired ms to delay: <input id="input" type="text" value="1"><P>
Measured delay:<br>
<ul>
instance: <div id="output"></div>
average: <div id="average"></div>
</ul>
</body>
</html>