#include #include #include #include #include #include #include #include "helpers.c" #include "helpers.h" #define PLSIZE 63 struct lst { struct lst * next; long int payload[PLSIZE]; } l; struct lst * mkws(int size) { int i,j; struct lst * ws0,*ws; if (size == 0) return NULL; srand(time(0)); ws = calloc(1,sizeof(struct lst)); ws->next = NULL; for (i=0;ipayload[i]=(rand())%2; for (j=1;jpayload[i]=(rand())%2; ws->next = ws0; } return ws; } long int z = 0; void kill_prg(int){ printf("Nombre de tests effectués: %ld\n", z); } int main(int argc, char ** argv) { struct lst * ws, * ws0; long long int start, end, dif; long int i, x, size, it; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(1); } set_signal_handler(SIGTSTP, &kill_prg); size=strtol(argv[1],NULL,0); ws = mkws(size); if (ws == NULL) { printf("NIL list created...\n"); exit(1); } it = strtol(argv[2],NULL,0); start = __rdtsc(); for (i = 0; i < it; i++) { ws0 = ws; while (ws0 != NULL) { x = ws0->payload[3]; x++; z++; ws0 = ws0->next; } } end = __rdtsc(); dif = end - start; printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it)); exit(0); }