<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>