0

私はさまざまなIE/Windowsの組み合わせのJavaScriptタイマー解像度を研究しています。IE9 / Vistaボックスで、17ミリ秒のタイマー解像度を取得しています(このテストの実行から)。これらの他の組み合わせにアクセスできません。(これがコミュニティウィキの質問であるかどうかはわかりませんが、とにかくここに行きます)

           XP       Vista      Win7
           --        --         --
IE7        ?          ?         ?
IE8        ?          ?         ?
IE9        ?          ?         ?         
4

2 に答える 2

0

標準のタイミング呼び出しのオペレーティングシステムには正確なタイマー解像度はありません(これにはJavascriptが含まれます-コメントとリンクしたテストが平均で約4ミリ秒で実行されていることに気付きましたが、これは私が提供した答え)。

一般に、プログラミング言語の標準タイミング関数のタイマー呼び出しは、オペレーティングシステムの低解像度タイマーの基本的な解像度に関連付けられています。これは、正確なミリ秒数後にインクリメントすることが保証されていませんが、すべての一般的なもので15ミリ秒です。オペレーティングシステム(Linuxのすべてのバージョン、およびWindowsとOSXを含む)。

これは、スクリプトが使用されているプログラミング言語に関係なく、オペレーティングシステムが、実行中のプログラムによって行われたタイミング要求の時刻が到来したどうかを断続的にチェックすることを意味します(低解像度のタイミング関数が呼び出されたと想定)。 /programsが書かれました。その場合、システムは、問題のターゲットプログラムの次のタイムスライスに対応するコールバック関数をスケジュールします。

平均すると、低解像度タイマーは約15ミリ秒ごとに増分しますが、これは平均です。タイマーの個々の増分ごとに異なります。通常、ハイエンドで最大25ミリ秒、ローエンドで最大8ミリ秒です。これが低解像度のシステムタイマーの性質です。システム全体(および個々のプログラム)のパフォーマンスへの影響は非常に小さいですが、精度はわずか15ミリ秒です。言い換えると、精度は1ミリ秒です(そのため、Javascriptタイミング関数などの標準のタイミング関数の精度はミリ秒です)が、精度は15ミリ秒です。精度と精度が異なります。

低解像度タイマーがこのように機能する理由は、まさに私が述べた理由です。そのため、タイミング機能はシステムに与える影響が少なくなります。より高解像度のタイミング機能が存在しますが、はるかに集中的であり、タイマーをテストおよび更新するためだけに多くのCPUサイクルを必要とします。最高精度のタイマーは、ハードウェア割り込みと組み合わせて追加の物理ハードウェアコンポーネントを必要とし、ミッションクリティカルなプログラムによる排他的な優先度の高いアクセスを必要とする場合があります。

肝心なのは、Javascriptのタイミング関数は正確ではないということです。それらは、平均して、ターゲット時間の約15ミリ秒以内にトリガーされ、場合によってはそれより短く、場合によってはそれより長くなります。

于 2012-07-08T00:56:29.850 に答える
0

さらに調査した結果、Window7より前のIEjavascriptタイマーは、Windowsシステムタイマーと呼ばれていました。これは、毎秒64ティック、つまり15.6ミリ秒間隔です。Windows 7には、実際には2つのタイマー設定があります。プラグを差し込んだときに適用される4msのタイマーと、プラグを抜いたときに適用される古い15.6msのタイマー。これは、高度な電力構成設定インターフェイスから実際に構成可能な省電力対策です。したがって、パーソナルマシンをすべての場合に15.6msまたは4msに切り替えることができます。または、逆にしたい場合は、次の場合に高い電力消費を実現できます。プラグが抜かれ、プラグが差し込まれているときの消費電力が少ない。

于 2012-07-11T19:59:09.277 に答える