2013-05-24 22 views
6

ベンチマークを数回実行し、平均値を書き留めます。しかし、私は、最初の実行の後で、その後の実行がより速いことに気付きます。私はそれが命令キャッシュと関係があると思うので、次回にプログラムを実行すると、ベンチマークはすでにキャッシュに命令を持っています。コールド命令とデータキャッシュの両方でプログラムを開始する方法はありますか?コールドキャッシュを使用してプログラムを起動する方法

+2

ディスクキャッシュの可能性が高いと思いますか? –

+0

これは、CPUキャッシュのためではなく、プログラムとデータがディスクから読み取られたためです。 – sharptooth

+0

いい質問です! –

答えて

4

これは正常な動作です。この問題を回避する1つの方法は、メイン実行前にウォームアップすることはほとんどありません。これらのウォームアップ・ランは、以前に実行していたプログラムを成長させたキャッシュ・メモリーを上書きします。平均値を計算している間、ウォームアップラン値を除外するのは、実際に実行するだけです。これらのアプローチをとるさまざまなベンチマーキングツールがあります。 kernbench、lmbenchなど。ウォームアップ値が利用可能な場合。

実行中のベンチマークがディスクから読み込む必要のあるデータに依存する場合、ディスクキャッシュにも影響があります。可能な場合は、これらのデータをRAMにキャッシュする方法があります。このテクニックは、ディスクキャッシュ関連の問題を避けるためにkernbenchで使用されています。

関連する問題