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