2008-09-25 18 views
5

Obiekt Date w JavaScript wykonuje w różny sposób maszynę do maszyny i przeglądarki do przeglądarki w odniesieniu do rozdzielczości funkcji w milisekundach. Zauważyłem, że większość komputerów ma rozdzielczość około 16 ms na IE, gdzie Chrome lub Firefox może mieć rozdzielczość tak dobrą jak 1ms.W JavaScript, czy istnieje źródło czasu o stałej rozdzielczości w milisekundach?

Czy ogólnie dostępna jest inna funkcja JavaScript lub IE, która zapewnia lepszą rozdzielczość w czasie? Próbuję pułapkę i rekord keyDown i keyUp razy w milisekundach i potrzebują go w zakresie +/- 10 ms lub mniej.

Aby zobaczyć ilustrację tego, sprawdź sekcję "uchwały nowej daty" na tej stronie. Znajduje się tabela z przyciskiem testowym, która ocenia czas w języku JavaScript w bieżącym komputerze/przeglądarce w milisekundach. Co ciekawe, Chrome regularnie uzyskuje rozdzielczość 1 ms.

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

Moje zadanie jest na metodzie JavaScript daty i czasu, które dadzą sub 10ms rozdzielczość całej przeglądarek. coś, co zastąpi lub ulepszy Date().

Odpowiedz

0

AFAIK, liczba milisekund jest tak dobra jak w JavaScript. Oto Mozilla.org documentation for the Date object. Nic tam nie wskazuje niczego z lepszą rozdzielczością.

+0

Uzgodniono - za pomocą Internet Explorera stwierdzam, że najlepszą rozdzielczością, jaką widzę, są znaczniki 16ms dla obiektu Date() w javascript. Poszukuję czegoś na IE z lepszą rozdzielczością niż wtedy. Rozdzielczość 1ms, składająca się z różnych przeglądarek, byłaby niesamowita! – WillR

2

Ponieważ wspomniano o przeglądarce Internet Explorer, zakładam, że pracujesz w systemie Windows. Rozdzielczość 15 ms, którą otrzymujesz, może wynikać z rozdzielczości zegara systemowego Windows.

Zauważyłem również, poprzez uruchamianie programów Java w systemie Windows, że rozdzielczość zegara systemowego wynosi około 16 ms. (Używając metody System.currentTimeMillis().)

Zrobiłem dość wyszukiwania, aby sprawdzić, czy mogę znaleźć jakiekolwiek informacje na temat rozdzielczości zegara systemowego w systemie Windows, i udało mi się znaleźć link do Inside Windows NT High Resolution Timers z TechNet. Wspomniano trochę o rozdzielczości zegara systemowego:

Windows NT baz wszystkie jego wsparcia zegar off jednym systemie zegara przerwań, który domyślnie przebiegów przy ziarnistości 10 milisekund. Jest to dlatego rozdzielczość standardowych zegarów Windows .

(Zakładam, że Windows XP i Vista nadal ma ten sam licznik, uważają, że jest potomkiem NT.)

ile Firefox i Chrome mają własne wysokiej rozdzielczości zegar wdrożone, wierzę że najlepsza rozdzielczość, jaką będziesz mógł uzyskać z przeglądarki na platformie Windows, będzie wynosić około 10 ms.

Chociaż nie ma znaczenia na to pytanie, ja też nie znaleźliśmy artykuł o MSDN na liczniki wysokiej rozdzielczości w systemie Windows: mplement a Continuously Updating, High-Resolution Time Provider for Windows

2

Wysoka rozdzielczość czas jest na komputerze desktop jest wciąż otwarty temat.

Dzisiejsze popularne systemy operacyjne zapewniają tylko 10-sekundową ziarnistość, ponieważ jest to częstotliwość ich przerwania zegara. Znajdziesz 10 ms również na stronach podręcznika systemu Linux, na przykład. Przeglądarka wyświetla tylko liczniki czasu dostarczone przez system operacyjny, z dodatkowym wewnętrznym narzutem przeglądarki.

To powiedziawszy, możliwe jest osiągnięcie większej ziarnistości. Ale wszystkie te techniki są specyficzne dla konfiguracji sprzętowej i nie można oczekiwać, że zostaną one ujawnione przez JavaScript w najbliższej przyszłości.

+0

Nie wiem o systemie operacyjnym, ale przeglądarki wydają się mieć minimum 10 ms, z wyjątkiem Google Chrome, który ma minimum 1 ms: http://ejohn.org/blog/javascript-in-chrome/ – enobrev

+0

Czytanie tego post to brzmi jak Chrome osiąga to z zajętym czekaniem. – ypnos