more verbosity in cache test

This commit is contained in:
Lenni Hein 2025-02-25 15:22:23 +01:00
parent 3799317456
commit b672bb0906

View File

@ -17,7 +17,7 @@ void measure_multiple_accesses(void (*addr)(void), size_t num_accesses, size_t*
} }
} }
size_t find_crossover_point(size_t* hits, size_t* misses, size_t num_accesses) void find_crossover_point(size_t* hits, size_t* misses, size_t num_accesses)
{ {
size_t hit_sum = 0, miss_sum = 0; size_t hit_sum = 0, miss_sum = 0;
@ -30,15 +30,19 @@ size_t find_crossover_point(size_t* hits, size_t* misses, size_t num_accesses)
size_t avg_hit = hit_sum / num_accesses; size_t avg_hit = hit_sum / num_accesses;
size_t avg_miss = miss_sum / num_accesses; size_t avg_miss = miss_sum / num_accesses;
return (avg_hit + avg_miss) / 2; // Midpoint as threshold printf("Average hit time: %zu\n", avg_hit);
printf("Average miss time: %zu\n", avg_miss);
size_t threshold = (avg_hit + avg_miss) / 2; // Midpoint as threshold
printf("Midpoint: %zu\n", threshold);
} }
int main() int main()
{ {
size_t* hits = malloc(NUM_ACCESSES * sizeof(size_t)); size_t* hits = malloc(NUM_ACCESSES * sizeof(size_t));
size_t* misses = malloc(NUM_ACCESSES * sizeof(size_t)); size_t* misses = malloc(NUM_ACCESSES * sizeof(size_t));
if (!hits || !misses) if (!hits || !misses)
{ {
perror("Memory allocation failed"); perror("Memory allocation failed");
return 1; return 1;
@ -46,11 +50,9 @@ int main()
// We use the addr. of main for our test, but anything works. // We use the addr. of main for our test, but anything works.
measure_multiple_accesses((void*) main, NUM_ACCESSES, hits, misses); measure_multiple_accesses((void*) main, NUM_ACCESSES, hits, misses);
find_crossover_point(hits, misses, NUM_ACCESSES);
size_t threshold = find_crossover_point(hits, misses, NUM_ACCESSES);
printf("Suggested threshold: %zu\n", threshold);
free(hits); free(hits);
free(misses); free(misses);
return 0; return 0;
} }