1

Microsoft のテクニカル ネット サイトのこの記事でexeは、Windows マシンの最小時間分解能を計算する を提供しています。これは、そのマシン上の任意のアプリケーションで利用できる最小の「ティック」である必要があります。

http://technet.microsoft.com/en-us/sysinternals/bb897568.aspx

現在のボックスでこのアプリを実行した結果は 15.625 ミリ秒です。また、Internet Explorer に対してテストを実行したところ、Date() JavaScript 関数からまったく同じ解像度が得られました。

紛らわしいのは、私が IE に対して実行した SAME テストでは、Google の Chrome ブラウザー (解像度 1 ミリ秒) と IE で実行されているフラッシュ ムービー (1 ミリ秒) の解像度がはるかに高いことです。アプリケーションがマシンのクロックよりも優れたクロック分解能を得る方法を誰か説明できますか? もしそうなら、Chrome 以外のブラウザーで (フラッシュを使用せずに) 一貫してより良い解像度を得る方法はありますか?

以下の最初の回答は、他の 2 つの質問につながります。

  1. マルチメディア タイマーは、システム クロック ティック間の時間をどのように取得しますか。システム クロックは、針が 15 ミリ秒刻みで動くアナログ時計のようなものだと思います。ティック間の時間はどのように測定されますか?
  2. マルチメディア タイマーはブラウザ、特に Internet Explorer で利用できますか? ソフトウェアをユーザーのブラウザ/マシンにプッシュすることなく、C# または Javascript でアクセスできますか?
4

3 に答える 3

4

マルチメディア タイマーを使用すると 1 ミリ秒まで短縮でき、QueryPerformanceCounter を使用するとさらに短縮できます。

GetLocalTime() API 時間分解能も参照してください。

編集:新しいサブ質問への部分的な回答...

システムの時間分解能は、Windows 3 および 95 アーキテクチャで約 15 ミリ秒でした。NT (および後継) では、ハードウェア アブストラクション レイヤー (HAL) からより良い解像度を得ることができます。QueryPerformanceCounter は、CPU サイクルではなく経過時間をカウントします。Raymond Chen によって書かれた記事から、追加の洞察が得られる場合があります。

ブラウザに関しては、タイマーに何を使用しているのか、OS とどのようにやり取りしているのかわかりません。

于 2008-09-25T19:05:30.947 に答える
1

timeBeginPeriod API を見てください。MSDN から: 「この関数は Windows のグローバル設定に影響します。Windows は、プロセスによって要求された最小値 (つまり、最高解像度) を使用します。」

http://msdn.microsoft.com/en-us/library/ms713413(VS.85).aspx

(Markdown は URL の括弧が好きではありませんでした)

投稿したリンクから参照されている「Inside Windows NT High Resolution Timers」を参照してください。

于 2008-09-25T19:37:06.207 に答える
0

プロセッサ上のAPICはバス速度で動作し、タイマーを備えています。システム時刻の代わりにそれを使用している可能性があります。(または、そこにない精度を提供しているだけかもしれません。)

ローカル APIC のこの説明では、それをタイマーとして使用することに言及しています。

(彼らが使用しているいくつかのパフォーマンス カウンターがある場合もあります。APIC をプログラムするにはデバイス ドライバーが必要になるため、実際にはその可能性が高くなります。)

于 2008-09-25T19:22:50.297 に答える