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