Измерение степени ассоциативности кэш-памяти
#include <stdio.h>
#include <windows.h>
int main()
{
FILE* f;
fopen_s(&f, "as.txt", "w");
LARGE_INTEGER begin, end, time, t_sec;
int blocksize = 1024, offset = 1024 * 1024, fragment = 32;
int *a = new int[offset / 4 * fragment];
QueryPerformanceFrequency(&t_sec);
for (int n = 1; n <= fragment; n++)
{
QueryPerformanceCounter(&begin);
for (int k = 0; k < 512 * 512; k++)
for (int i = 0; i < blocksize / n / 4; i++)
for (int j = 0; j < n; j++)
*(a + i + j * offset / 4) = i;
QueryPerformanceCounter(&end);
time.QuadPart = end.QuadPart - begin.QuadPart;
printf("%d: %lf sec\n", n, (double)time.QuadPart / (double)t_sec.QuadPart);
fprintf(f, "%d: %lf sec\n", n, (double)time.QuadPart / (double)t_sec.QuadPart);
}
return 0;
}
Напишите, пожалуйста, комментарии к коду, или хотя бы объясните, как работает. Код не мой.