main.c revision 19192
119192Sphk#include <stdlib.h> 219192Sphk#include <stdio.h> 319192Sphk#include <unistd.h> 419192Sphk 519192Sphku_long NBUCKETS = 2000; 619192Sphku_long NOPS = 200000; 719192Sphku_long NSIZE = (16*1024); 819192Sphk 919192Sphkchar **foo; 1019192Sphk 1119192Sphkint 1219192Sphkmain(int argc, char **argv) 1319192Sphk{ 1419192Sphk int i,j,k; 1519192Sphk 1619192Sphk if (argc > 1) NOPS = strtoul(argv[1],0,0); 1719192Sphk if (argc > 2) NBUCKETS = strtoul(argv[2],0,0); 1819192Sphk if (argc > 3) NSIZE = strtoul(argv[3],0,0); 1919192Sphk printf("BRK(0)=%x ",sbrk(0)); 2019192Sphk foo = malloc (sizeof *foo * NBUCKETS); 2119192Sphk memset(foo,0,sizeof *foo * NBUCKETS); 2219192Sphk for (i = 1; i <= 4096; i+=i) { 2319192Sphk for (j = 0 ; j < 40960/i && j < NBUCKETS; j++) { 2419192Sphk foo[j] = malloc(i); 2519192Sphk } 2619192Sphk for (j = 0 ; j < 40960/i && j < NBUCKETS; j++) { 2719192Sphk free(foo[j]); 2819192Sphk foo[j] = 0; 2919192Sphk } 3019192Sphk } 3119192Sphk 3219192Sphk for (i = 0 ; i < NOPS ; i++) { 3319192Sphk j = random() % NBUCKETS; 3419192Sphk k = random() % NSIZE; 3519192Sphk foo[j] = realloc(foo[j], k & 1 ? 0 : k); 3619192Sphk if (foo[j]) 3719192Sphk foo[j][0] = 1; 3819192Sphk } 3919192Sphk printf("BRK(1)=%x ",sbrk(0)); 4019192Sphk for (j = 0 ; j < NBUCKETS ; j++) { 4119192Sphk if (foo[j]) { 4219192Sphk free(foo[j]); 4319192Sphk foo[j] = 0; 4419192Sphk } 4519192Sphk } 4619192Sphk printf("BRK(2)=%x NOPS=%lu NBUCKETS=%lu NSIZE=%lu\n", 4719192Sphk sbrk(0),NOPS,NBUCKETS,NSIZE); 4819192Sphk return 0; 4919192Sphk} 50