Hier erhalten Sie genaue Messungen ohne einen genauen Timer, solange was Sie Timing häufig auftritt, was ich hoffe, dass sie in Ihrem Fall tun.
Durchschnitt/aggregieren Sie die ungenauen Messungen der Dauer Ihres Ereignisses. Ein Ausschnitt aus einem meiner Projekte:
var start = Date.now();
... (stuff to be timed)
var now = Date.now();
if (DEBUG.enabled) {
var profile_this_iter = now - start;
profile += (profile_this_iter - profile) * 0.02;
}
jeden neuen Wert Maßnahmen stupst Ihre Anzeige um einen Faktor von 0,02 bis es näher. Offensichtlich willst du das ein bisschen verbessern. Dies ermöglicht es Ihnen, einen Mittelwert zu lesen, der ungefähr 0,5 ms beträgt, wenn Sie eine Dauer von 1 ms der Hälfte der Zeit und 0 ms der Hälfte der Zeit (mit einem 1 ms Auflösungstimer) lesen.
Dies ist offensichtlich kein Ersatz für einen richtigen Timer mit höherer Auflösung. Aber ich verwende diesen einfachen Algorithmus, um meinen Javascript-Projekten eine nicht-crappy FPS-Lesung zu geben. Sie erhalten einen Dämpfungsfaktor, den Sie anpassen können, je nachdem, ob Sie mehr Genauigkeit oder eine schnellere Reaktion auf Änderungen wünschen. In Anbetracht der Einfachheit dieses Handbuchs wäre es schwierig, einen eleganteren Algorithmus zu finden, der Ihnen eine gute Darstellung ohne verbesserte Eingabedaten bietet. Eine der Möglichkeiten, dies zu verbessern, wäre die Anpassung des Annäherungsfaktors (0,02 konstant) basierend auf der Frequenz der Abtastung selbst (falls sich dies ändert), auf diese Weise könnte eine langsamere gemessene Rate schneller konvergieren als mit einem festen Wert .
JavaScript (derzeit) fehlen Sub-Millisekunden-Timer. –
Ich würde nein, da das Date-Objekt mit Millisekunden auf niedrigster Ebene arbeitet, aber lass es mich wissen, wenn nicht. – philipp
mögliches Duplikat von [Bietet Javascript einen Timer mit hoher Auflösung?] (Http: // stackoverflow.com/questions/6875625/does-javascript-provide-a-high-resolution-timer) – Bergi