標準のタイミング呼び出しのオペレーティングシステムには正確なタイマー解像度はありません(これにはJavascriptが含まれます-コメントとリンクしたテストが平均で約4ミリ秒で実行されていることに気付きましたが、これは私が提供した答え)。
一般に、プログラミング言語の標準タイミング関数のタイマー呼び出しは、オペレーティングシステムの低解像度タイマーの基本的な解像度に関連付けられています。これは、正確なミリ秒数後にインクリメントすることが保証されていませんが、すべての一般的なもので約15ミリ秒です。オペレーティングシステム(Linuxのすべてのバージョン、およびWindowsとOSXを含む)。
これは、スクリプトが使用されているプログラミング言語に関係なく、オペレーティングシステムが、実行中のプログラムによって行われたタイミング要求の時刻が到来したかどうかを断続的にチェックすることを意味します(低解像度のタイミング関数が呼び出されたと想定)。 /programsが書かれました。その場合、システムは、問題のターゲットプログラムの次のタイムスライスに対応するコールバック関数をスケジュールします。
平均すると、低解像度タイマーは約15ミリ秒ごとに増分しますが、これは平均です。タイマーの個々の増分ごとに異なります。通常、ハイエンドで最大25ミリ秒、ローエンドで最大8ミリ秒です。これが低解像度のシステムタイマーの性質です。システム全体(および個々のプログラム)のパフォーマンスへの影響は非常に小さいですが、精度はわずか15ミリ秒です。言い換えると、精度は1ミリ秒です(そのため、Javascriptタイミング関数などの標準のタイミング関数の精度はミリ秒です)が、精度は15ミリ秒です。精度と精度が異なります。
低解像度タイマーがこのように機能する理由は、まさに私が述べた理由です。そのため、タイミング機能はシステムに与える影響が少なくなります。より高解像度のタイミング機能が存在しますが、はるかに集中的であり、タイマーをテストおよび更新するためだけに多くのCPUサイクルを必要とします。最高精度のタイマーは、ハードウェア割り込みと組み合わせて追加の物理ハードウェアコンポーネントを必要とし、ミッションクリティカルなプログラムによる排他的な優先度の高いアクセスを必要とする場合があります。
肝心なのは、Javascriptのタイミング関数は正確ではないということです。それらは、平均して、ターゲット時間の約15ミリ秒以内にトリガーされ、場合によってはそれより短く、場合によってはそれより長くなります。