2016-03-19 13 views
2

Ich versuche jede Millisekunde einen Satz von Werten zu generieren.JavaScript, das mehr Zeit benötigt als erwartet

Durch die Verwendung von window.performance.now() habe ich festgestellt, dass 1000 Punkte (Daten im Wert von 1 Sekunde) ungefähr 1 Millisekunde Verarbeitungszeit erfordern.

Also ... warum wird eine Log-Anweisung alle 3 Sekunden und nicht alle 1 Sekunde generiert, wenn meine Bedingung zum Generieren der Anweisung lautet, dass ich 1000 Punkte generiert habe?

Der Code ist unten enthalten. Und hier ist ein Link zu jsfiddle: http://jsfiddle.net/MWadX/421/

var c = 0; 
var m = 0; 
var t = 0; 
var x = 0; 
var y = 0; 

window.setInterval(function() 
{ 
     var e; 
     var s; 

     if (c === 0) 
     { 
      m = Date.now(); 
     } 

     s = window.performance.now(); 

     x += Math.random(); 
     y += Math.random(); 
     c++; 

     e = window.performance.now(); 
     t += e - s; 

     if (c !== 1000) 
     { 
      return; 
     } 

     console.log(t.toFixed(0).toString() + " milliseconds"); 
     console.log((Date.now() - m).toFixed(0).toString() + " milliseconds"); 

     c = 0; 
     m = 0; 
     t = 0; 
     x = 0; 
     y = 0; 
}, 1); 
+0

Justin Tipp, wenn Sie mehreren Variablen den gleichen Wert zuweisen, können Sie es in einer Zeile tun. Also könntest du 'c = m = t = c = y = 0;' statt was du getan hast –

Antwort

4

setInterval, setTimeout und Mindest Timeouts

Nach dem Mozilla Development Network setInterval und setTimeout haben eine minimale Timeout. Dieser Wert variiert zwischen den Browsern etwas, aber the HTML5 spec specifies a minimum timeout of 4ms, und dieser Wert wird in Browsern, die nach 2010 erstellt wurden, ziemlich gut eingehalten. Wenn Sie ein niedrigeres Timeout übergeben, wird es intern auf das Minimum aufgeblasen.

Inaktiv Tabs

In Hintergrund tabs wird der Timeout beschränkt noch weiter auf ein Minimum von 1000 ms.

+2

Ausgezeichnet! Danke für die Klarstellung. Ich habe das Intervall auf 5 Millisekunden aktualisiert, die Anzahl auf 200 reduziert, und jetzt bekomme ich Ergebnisse, die viel vernünftiger sind. – blf

Verwandte Themen