9

MSDN のストップウォッチ クラスのページで、ストップウォッチについて次のように述べている興味深い記事へのリンクを発見しました。

ただし、いくつかの深刻な問題があります。

  • これは、複数のプロセッサを搭載した PC では信頼できない場合があります。BIOSのバグにより
    、正しい結果を得るには、Start() と Stop() を同じプロセッサで実行する必要があります。

  • これは、一定のクロック速度を持たないプロセッサでは信頼できません (ほとんどのプロセッサは、エネルギーを節約するためにクロック速度を下げることができます)。これについては、こちらで詳しく説明しています。

私は少し混乱しています。私はストップウォッチの使用例をたくさん見てきましたが、誰もこの欠点について言及していません。これはどれほど深刻ですか?ストップウォッチの使用を避けるべきですか?

4

3 に答える 3

2

さらに興味深い質問は次のとおりです。

  1. Start() とは異なるプロセッサで Stop() が実行される条件は?
    .
    ほとんどのアプリケーション シナリオでは、答えは「なし」です。

  2. 測定間隔中にプロセッサのクロック速度が変化するのはどのような条件下ですか?
    .
    CPU を集中的に使用するベンチマークでは、「なし」。

于 2010-04-06T14:59:28.470 に答える
2

MSDN 記事のメモを参照してください。

マルチプロセッサ コンピュータでは、スレッドがどのプロセッサで実行されるかは問題ではありません。ただし、BIOS またはハードウェア アブストラクション レイヤー (HAL) のバグにより、異なるプロセッサで異なるタイミング結果が得られる可能性があります。スレッドのプロセッサ アフィニティを指定するには、ProcessThread.ProcessorAffinity メソッドを使用します。

于 2010-04-06T15:02:07.997 に答える
2

壊れているのではなく、制限があるだけです。ほとんどの目的 (読み: 非公式のマイクロベンチマーク)StopWatchは、非公式のテストには十分であるという理由だけで問題なく使用できます。より正式な目的のためには、適切な結果を得るためにより多くの投資を行うため、独自のインストルメンテーション コードを作成することをお勧めします。

于 2010-04-06T14:56:08.853 に答える