Ich versuche, die Auswirkungen des Zwischenspeicherns programmgesteuert mit dem folgenden Programm zu verstehen. Ich erhalte segfault mit dem Code. Früher habe ich GDB (kompiliert mit -g -O0
) und fand, dass es Segmentierung Verwerfungen war aufSegmentierungsfehler beim Aufruf von clock()
start = clock() (first occourance)
Bin ich etwas falsch? Der Code sieht gut aus für mich. Kann jemand auf den Fehler hinweisen?
#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;
}