1

Intel の RDTSC を使用していくつかのパフォーマンス測定を試みていますが、さまざまなテスト実行中に得られる変動は非常に奇妙です。ほとんどの場合、C での私のベンチマークには 3000000 Mio サイクルが必要ですが、まったく同じ実行でも、場合によっては 5000000 とほぼ 2 倍かかることがあります。適切なパフォーマンスの見積もりが得られるように、負荷の高いワークロードを並行して実行しないようにしました。この巨大なタイミングの変動がどこから来るのか誰にも分かりませんか? 割り込みなどが発生する可能性があることは知っていますが、タイミングがこれほど大きく変動するとは思っていませんでした。

PS .: Linux を実行している Pentium プロセッサで実行しています。

フィードバックありがとう、ジョン

4

3 に答える 3

2

答えは次のとおりだと思います。

負荷の高いワークロードを並行して実行しないようにしまし

最新の OS では、これを十分に制御できません。

于 2010-01-24T12:33:09.580 に答える
0

最新のプロセッサのキャッシュを考慮に入れる必要があります。長時間の実行時間を測定した場合、別のプロセスによってプログラムのキャッシュコンテンツが削除される可能性があります。ヘンクが指摘したように、最近のOSでは、それほど制御できないことがたくさん発生します。

于 2010-01-24T12:53:47.660 に答える
0

このウィキペディアの記事によると、RDTSC (タイム スタンプ カウンター) は、マルチコア システムでのベンチマークに確実に使用することはできません。すべてのコアがタイムスタンプ レジスタに同じ値を持つという保証はありません。

Linux では、POSIXclock_gettime関数を使用することをお勧めします。

于 2010-01-24T12:00:29.857 に答える