1

QueryPerformanceCounter()をタイミング関数に使用できることは知っています。私は知りたいです:

1-CPUをオーバークロックしてタイマーの解像度を上げることはできますか(それにより、タイマーのティックが速くなります)?

2-基本的に、一部のタイマーが他のタイマーよりも正確になる理由(たとえば、QueryPerformanceCounter()はGetTickCount()と比較してより正確です)?マザーボードに単結晶発振器がある場合、なぜ一部のタイマーが他のタイマーに比べて遅いのですか?

4

3 に答える 3

3
  1. QueryPerformanceCounter非常に高い解像度を持っています-通常は1ナノ秒未満です。なぜ増やしたいのかわかりません。オーバークロックはそれを増加させますが、それはオーバークロックの非常に弱い理由のようです。

  2. QueryPerformanceCounter非常に正確ですが、いくらか高価であまり便利ではありません。
    a。高価なrdtsc命令を使うので高価です。より高速なタイマーは、メモリから整数を読み取ることができます。この整数は更新する必要があり、あまり頻繁に更新したくないので(1秒間に1000回が妥当です)、精度の低い非常に安価なタイマーを取得します。それは基本的にGetTickCountです。
    b。コンピュータ間で単位が変わるので不便です。ナノ秒の場合もあれば、ハーフナノの場合もあります。で計算するのが難しくなります。
    a。もう1つの不便な点は、非常に大きな数値を返すことです。これは、それらを使用して数学を実行しようとするとオーバーフローする可能性があるため、注意する必要があります。

于 2012-06-12T11:58:02.490 に答える
1

QPCのタイミングソースはマシンに依存します。これは通常、チップセットのどこかで利用可能な周波数から取得されます。CPUのオーバークロックがCPUに影響を与えるかどうかは、マザーボードの設計に大きく依存します。最も簡単な方法は、試してみて、QueryPerformanceFrequencyを使用して効果を確認することです。

GetTickCountは、まったく異なるタイマーソースから駆動されます。この信号は、クロック割り込みも生成します。通常は1/64秒とあまり正確ではありませんが、非常に正確です。マシンは時々タイムサーバーに接続して、時計を再調整し、時計補正係数を調整します。これにより、1年で約1秒の精度になります。QPCは非常に正確ですが、それほど正確ではありません。短い間隔で時間を計る場合にのみ使用してください。

于 2012-06-12T12:46:33.530 に答える
0

1-はい、内部的には、より優れたタイマーの1つはrdtscです。これは、クロック値を提供します。これをcpuid命令からの情報と組み合わせると、時間が与えられます。

2-他のタイマーは、たとえば8253タイマーなどのさまざまなタイミングソースに依存しています。

QPFは、rdtscが提供するものに加えてMicrosoftによって追加されたラッパーです。詳細については、この記事をお読みください: http: //www.strchr.com/performance_measurements_with_rdtsc

于 2012-06-12T10:01:16.477 に答える