1 <html> 2 <head> 3 <script language="javascript"> 4 var last = new Date(); // The last time we sampled the timer 5 var total_value = 0; // The sum of the intervals measured 6 var total_count = 0; // The count of the intervals measured 7 var last_interval = 1; 8 function fire() { 9 10 var current = new Date(); 11 var ms = current - last; 12 13 total_value += ms; 14 total_count++; 15 16 // Display the interval output. 17 var output = document.getElementById('output'); 18 output.innerHTML = ms + "ms"; 19 20 // Display the average output. 21 var average = document.getElementById('average'); 22 average.innerHTML = total_value / total_count + "ms"; 23 24 // Get the new interval from the input. 25 var input = document.getElementById('input'); 26 27 // If the interval has changed, reset our averages. 28 if (input.value != last_interval) { 29 total_value = 0; 30 total_count = 0; 31 } 32 last_interval = input.value; 33 34 last = new Date(); 35 setTimeout(fire, last_interval); 36 } 37 </script> 38 </head> 39 40 <body onload='setTimeout("fire()", 1)'> 41 42 <h1>Test JS setTimeout() speed</h1> 43 44 This page tests the frequency of setTimeout() in the browser. 45 Javascript applications use setTimeout() as a mechanism to 'yield' 46 to the browser so that the browser can repaint. Most browsers 47 implement a 15ms setTimeout() minimum. Use this to page to measure 48 setTimeout() lag and discover your browser's minimum interval.<P> 49 50 <hr> 51 52 Desired ms to delay: <input id="input" type="text" value="1"><P> 53 54 Measured delay:<br> 55 <ul> 56 instance: <div id="output"></div> 57 average: <div id="average"></div> 58 </ul> 59 60 </body> 61 </html> 62