心配する必要があるもう 1 つのことは、マルチコア マシンで実行している場合、プログラムが別のコアに移動され、別の rdtsc カウンターを持つ可能性があることです。ただし、システムコールを介してプロセスを 1 つのコアに固定できる場合があります。
このようなものを測定しようとしている場合、おそらくタイムスタンプを配列に記録し、ベンチマーク対象のコードが完了した後に戻ってこの配列を調べます。タイムスタンプの配列に記録されたデータを調べるときは、この配列が CPU キャッシュに依存することに注意する必要があります (配列が大きい場合はページングも可能です)。データ。タイム スタンプ間に非常に規則的な時間差が見られるはずですが、いくつかのスパイクと、場合によってはいくつかのディップがあります (おそらく別のコアに移動したため)。外部イベントがこれらの測定に影響を与えなかったことを示唆しているため、定期的な時間差はおそらく最良の測定値です。
そうは言っても、ベンチマークしているコードのメモリ アクセス パターンや実行時間が不規則であったり、システム コール (特に IO 関連のもの) に依存している場合は、関心のあるデータからノイズを分離するのが難しくなります。