いくつかの正確な測定のために、コマンド ラインから RAM (メイン メモリ) までのすべてのキャッシュを無効化/フラッシュしたいと思います (メイン プログラムの実行時間の評価がこのプロセスの影響を受けないようにするため)。私は以下を見つけました(ここからの最初と最後):
1. echo 3 > /proc/sys/vm/drop_caches
そして、次のように(事前に実行された)プログラムを構築できました
2. #include <asm/cachectl.h>
int cacheflush(char *addr, int nbytes, int cache);
または私は最終的に行うことができます
3. int main() {
const int size = 20*1024*1024; // Allocate 20M. Set much larger then L2
char *c = (char *)malloc(size);
for (int i = 0; i < 0xffff; i++)
for (int j = 0; j < size; j++)
c[j] = i*j;
}
私の質問は次のとおりです。私がする必要があること、どのバージョンが最適か、そしてそれが #2 の場合、開始アドレスとして与えるべきアドレスは何ですか? 私uname -a
は Linux 3.2.0-33-generic #52-Ubuntu SMP Thu Oct 18 16:19:45 UTC 2012 i686 です