Önbelleğe almanın programlı olarak aşağıdaki programı kullanarak etkilerini anlamaya çalışıyorum. Kodla segfault alıyorum. Ben (-g -O0
ile derlenmiş) GDB kullanılan veArama çağrısı sırasında bölüm hatası()
start = clock() (first occourance)
ben yanlış mı yapıyorum üzerinde segmentasyon faylanma olduğu bulundu? Kod bana iyi görünüyor. Birisi hataya işaret edebilir mi?
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#define MAX_SIZE (16*1024*1024)
int main()
{
clock_t start, end;
double cpu_time;
int i = 0;
int arr[MAX_SIZE];
/* CPU clock ticks count start */
start = clock();
/* Loop 1 */
for (i = 0; i < MAX_SIZE; i++)
arr[i] *= 3;
/* CPU clock ticks count stop */
end = clock();
cpu_time = ((double) (end - start))/CLOCKS_PER_SEC;
printf("CPU time for loop 1 %.6f secs.\n", cpu_time);
/* CPU clock ticks count start */
start = clock();
/* Loop 2 */
for (i = 0; i < MAX_SIZE; i += 16)
arr[i] *= 3;
/* CPU clock ticks count stop */
end = clock();
cpu_time = ((double) (end - start))/CLOCKS_PER_SEC;
printf("CPU time for loop 2 %.6f secs.\n", cpu_time);
return 0;
}