配列を、量を変動させながら舐めまわしていくプログラムを書いてやって、読み込むデータの量が大きくなって行くと、ある量からはキャッシュにデータが載りきらなくなって、急に遅くなったりするんだよーって実演しようと思ったのだけど、思ったような結果が得られなかった。
ありゃりゃ。
本当なら、一次キャッシュと2次キャッシュのサイズ周辺で変化が見られるはずなんだけどな。
- コード
#include
#include
#include
#include#define ARR_LENGTH 1024*1024
#define INCREMENT_WIDTH 1024
#define EACH_TEST_COUNT 100
#define ALL_TEST_COUNT ((int)(ARR_LENGTH / INCREMENT_WIDTH))double gettimeofday_sec()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec + (double)tv.tv_usec*1e-6;
}void main(){
int arr[ARR_LENGTH];
double results[ALL_TEST_COUNT];
int i,j;
int dummy_arr_length,count,sum;
double start,end;
FILE *fout;
srand(time(NULL));
for(i=0;i
- コンパイル
gcc -pg -o cache_test.out cache_test.c
- グラフ
CSVをExcelで見てみれば?