#define ALL_WORKSETS_BENCH
struct s {
- int dummy[56];
+ char dummy[56];
struct s *ptr;
};
-struct s array[0x1000000/sizeof(struct s)];
+struct s array[0x2100000/sizeof(struct s)];
#define REPEATS (0x20000000)
static __inline__ uint64_t rdtsc(void)
while (1)
#endif
{
- unsigned int i;
- for (i=0; i < size / sizeof(array[0]); i++)
- array[i].ptr = &array[i+1];
- array[ size / sizeof(array[0]) - 1].ptr = &array[0];
+ uint8_t repeat_times = 70;
+ while (repeat_times--){
+
+ unsigned int i;
+ for (i=0; i < size / sizeof(array[0]); i++)
+ array[i].ptr = &array[i+1];
+ array[ size / sizeof(array[0]) - 1].ptr = &array[0];
- i = REPEATS;
- volatile struct s *p = &array[0];
- uint64_t tic, tac;
- tic = rdtsc();
- while (i--) {
- p = p->ptr;
- //printf("%p\n", p);
- }
- tac = rdtsc();
- printf("%d %llu\n", size, (tac - tic) / REPEATS);
- fflush(stdout);
+ i = REPEATS;
+ volatile struct s *p = &array[0];
+ uint64_t tic, tac;
+ tic = rdtsc();
+ while (i--) {
+ p = p->ptr;
+ //printf("%p\n", p);
+ }
+ tac = rdtsc();
+ printf("%d %llu\n", size, (tac - tic) / REPEATS);
+ fflush(stdout);
}
printf("10 sec wait and do again.\n");
l4_sleep(10000);
+ }
}
return 0;
}