2008-09-25 7 views
5

Das Date-Objekt in JavaScript führt in Abhängigkeit von der Auflösung der Funktion in Millisekunden eine andere Methode als Maschine und Browser zu Browser aus. Ich habe festgestellt, dass die meisten Maschinen eine Auflösung von etwa 16 ms im IE haben, wo Chrome oder Firefox eine Auflösung von bis zu 1 ms haben können.Gibt es in JavaScript eine Quelle für Zeit mit einer konsistenten Auflösung in Millisekunden?

Gibt es eine andere Funktion für JavaScript im Allgemeinen oder IE speziell für eine bessere Zeitauflösung? Ich versuche, keyDown und keyUp mal in Millisekunden einzufangen und aufzuzeichnen und brauche es im Bereich +/- 10 ms oder weniger.

Um eine Illustration davon zu sehen, sehen Sie sich den Abschnitt "resolutions of new date()" auf dieser Seite an. Es gibt eine Tabelle mit einer Test-Schaltfläche, die die aktuelle JavaScript-Zeitauflösung des Rechners/Browsers in Millisekunden auswertet. Interessanterweise erhält Chrome regelmäßig eine Auflösung von 1 ms.

http://www.merlyn.demon.co.uk/js-dates.htm#OV

Meine Suche ist nach einer JavaScript Datum-Zeit-Methode, die Unter 10ms Auflösung in allen Browsern geben. etwas zu ersetzen oder zu verbessern Date().

Antwort

0

AFAIK, Millisekunden ist so gut wie es in JavaScript kommt. Hier ist die Mozilla.org documentation for the Date object. Nichts darin deutet auf eine feinere Auflösung hin.

+0

Einverstanden - Ich finde mit Internet Explorer, dass die beste Auflösung, die ich sehe, 16ms Ticks für das Date() Objekt in Javascript ist. Auf der Suche nach etwas auf IE mit besserer Auflösung als das. 1ms Auflösung, konsistent zwischen Browsern, würde rocken! – WillR

2

Da Sie den Internet Explorer erwähnen, gehe ich davon aus, dass Sie unter Windows arbeiten. Die 15-ms-Auflösung, die Sie erhalten, hat möglicherweise mit der Windows-System-Timer-Auflösung zu tun.

Ich habe auch festgestellt, durch Ausführen von Java-Programmen unter Windows, dass die Auflösung des System-Timers etwa 16 ms oder so ist. (Mit der System.currentTimeMillis() Methode.)

Ich habe eine ziemlich Suche, um zu sehen, ob ich Informationen über die System-Timer-Auflösung in Windows finden konnte, und war in der Lage, einen Link zu Inside Windows NT High Resolution Timers von TechNet zu finden. Es sei erwähnt, ein wenig über die Auflösung des Windows-System-Timer:

Windows NT Basen alle seiner Timer Unterstützung aus einer Systemuhr Interrupt, die standardmäßig läuft mit einer 10 Millisekunden Granularität. Dies ist daher die Auflösung von Standard Windows-Timer.

(Ich gehe davon aus, dass Windows XP und Vista immer noch den gleichen Timer hat, betrachten es als ein Nachkomme von NT ist.)

Es sei denn, Firefox und Chrome ihre eigenen hochauflösenden Timer implementiert haben, glaube ich, dass die beste Auflösung, die Sie von einem Browser auf der Windows-Plattform erhalten, etwa 10 ms beträgt. mplement a Continuously Updating, High-Resolution Time Provider for Windows

2

Hochauflösende Timing auf einem Desktop-Rechner ist noch ein offenes Thema:

Obwohl auf diese Frage nicht relevant, ich habe auch einen Artikel auf MSDN auf hochauflösenden Timer auf Windows.

Heutige populäre Betriebssysteme bieten nur eine Granularität von 10 ms, weil das die Frequenz ihres Taktgeber-Interrupts ist. Sie finden die 10 ms beispielsweise auch in Linux-Manpages. Der Browser zeigt nur die vom Betriebssystem bereitgestellten Timer mit zusätzlichem browserinternem Overhead an.

Das heißt, es ist möglich, eine höhere Granularität zu erreichen. Aber all diese Techniken sind spezifisch für das Hardware-Setup und Sie können nicht erwarten, dass sie in naher Zukunft durch JavaScript verfügbar gemacht werden.

+0

Ich weiß nicht über das Betriebssystem, aber die Browser scheinen ein 10ms Minimum zu halten, mit Ausnahme von Google Chrome, die ein Minimum von 1 ms hat: http://ejohn.org/blog/javascript-in-chrome/ – enobrev

+0

Das lesen Post it hört sich an wie Chrome dies mit viel Warten erreicht. – ypnos