5

JavaScript の Date オブジェクトは、関数のミリ秒単位の解決に関して、マシンごと、ブラウザーごとに異なる動作をします。ほとんどのマシンは IE で約 16 ミリ秒の解像度を持っていることがわかりましたが、Chrome や Firefox では 1 ミリ秒程度の解像度がある場合があります。

一般的に JavaScript で、または IE でより良い時間分解能を提供する別の機能はありますか? keyDownミリ秒単位で時間をトラップして記録しようとしてkeyUpいますが、+/- 10 ミリ秒の範囲内である必要があります。

この図を見るには、このページの「new date() の解像度」セクションをチェックしてください。現在のマシン/ブラウザの JavaScript 時間分解能をミリ秒単位で評価するテスト ボタンを含む表があります。興味深いことに、Chrome は定期的に 1 ミリ秒の解像度を取得します。

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

私の探求は、ブラウザー間でサブ 10 ミリ秒の解像度を提供する JavaScript 日時メソッドです。Date() を置き換えるか改善するもの。

4

3 に答える 3

2

デスクトップ マシンでの高解像度のタイミングは、まだ未解決のトピックです。

今日の一般的なオペレーティング システムでは、10 ミリ秒の粒度しか提供されません。これは、クロック タイマー割り込みの頻度だからです。たとえば、Linux のマンページにも 10 ミリ秒があります。ブラウザーは、オペレーティング システムによって提供されるタイマーのみを公開し、ブラウザー内部のオーバーヘッドが追加されます。

とはいえ、より高い粒度を達成することは可能です。ただし、これらの手法はすべてハードウェアのセットアップに固有のものであり、近い将来に JavaScript を介して公開されるとは考えられません。

于 2008-09-25T03:52:48.410 に答える
2

Internet Explorer について言及しているので、Windows で作業していると思います。取得している 15 ミリ秒の解像度は、Windows システム タイマーの解像度に関係している可能性があります。

また、Windows で Java プログラムを実行しているときに、システム タイマーの分解能が約 16 ミリ秒程度であることにも気付きました。(System.currentTimeMillis()メソッドを使用します。)

Windows のシステム タイマーの解像度に関する情報を見つけることができるかどうかを調べるためにかなりの検索を行ったところ、TechNet からInside Windows NT High Resolution Timersへのリンクを見つけることができました。Windows システム タイマーの解像度について少し言及しました。

Windows NT は、デフォルトで 10 ミリ秒の粒度で実行される 1 つのシステム クロック割り込みをすべてのタイマー サポートの基盤としています。したがって、これは標準の Windows タイマーの解像度です。

(Windows XP と Vista にはまだ同じタイマーがあると想定しています。これは NT の子孫であると考えてください。)

Firefox と Chrome に独自の高解像度タイマーが実装されていない限り、Windows プラットフォームのブラウザーから取得できる最高の解像度は約 10 ミリ秒になると思います。

この質問とは関係ありませんが、Windows の高解像度タイマーに関する MSDN の記事も見つけました: mplement a Continuously Updating, High-Resolution Time Provider for Windows

于 2008-09-25T03:05:56.043 に答える
0

私の知る限り、ミリ秒はJavaScriptで得られるのと同じくらい良いです。Date オブジェクトに関する Mozilla.org のドキュメントは次のとおりです。そこには、より細かい解像度を持つものは何もありません。

于 2008-09-25T02:53:23.420 に答える