Home | History | Annotate | Download | only in perf
      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 #define NLIVE 1000000
      5 
      6 #define NITERS (3*1000*1000)
      7 
      8 char* arr[NLIVE];
      9 
     10 int main ( void )
     11 {
     12    int i, j, nbytes = 0;
     13    printf("initialising\n");
     14    for (i = 0; i < NLIVE; i++)
     15       arr[i] = NULL;
     16 
     17    printf("running\n");
     18    j = -1;
     19    for (i = 0; i < NITERS; i++) {
     20       j++;
     21       if (j == NLIVE) j = 0;
     22       if (arr[j])
     23          free(arr[j]);
     24       arr[j] = malloc(nbytes);
     25 
     26       // Cycle through the sizes 0,8,16,24,32.  Zero will get rounded up to
     27       // 8, so the 8B bucket will get twice as much traffic.
     28       nbytes += 8;
     29       if (nbytes > 32)
     30          nbytes = 0;
     31    }
     32 
     33    for (i = 0; i < NLIVE; i++)
     34       if (arr[i])
     35          free(arr[i]);
     36 
     37    printf("done\n");
     38    return 0;
     39 }
     40