diff --git a/tools/test/malloc/Makefile b/tools/test/malloc/Makefile index 3cf3ee035a2d..0db597724b58 100644 --- a/tools/test/malloc/Makefile +++ b/tools/test/malloc/Makefile @@ -1,23 +1,14 @@ PROG= malloc +SRCS= main.c malloc.c +.PATH: ${.CURDIR}/../../../lib/libc/stdlib + NOMAN= sorry -libcmalloc: - make clean - make "CFLAGS=-O2" - mv malloc libcmalloc +test: malloc @echo - @csh -x -c "time ./libcmalloc 500000 2000 8192" - @csh -x -c "time ./libcmalloc 50000000 2000 8192" - @csh -x -c "time ./libcmalloc 500000 14000 8192" - @csh -x -c "time ./libcmalloc 20000000 20000 2048" - -gnumalloc: - make clean - make "CFLAGS=-lgnumalloc -O2" - mv malloc gnumalloc - @csh -x -c "time ./gnumalloc 500000 2000 8192" - @csh -x -c "time ./gnumalloc 50000000 2000 8192" - @csh -x -c "time ./gnumalloc 500000 14000 8192" - @csh -x -c "time ./gnumalloc 20000000 20000 2048" + @csh -x -c "time ./malloc 500000 2000 8192" + @csh -x -c "time ./malloc 50000000 2000 8192" + @csh -x -c "time ./malloc 500000 14000 8192" + @csh -x -c "time ./malloc 20000000 20000 2048" .include diff --git a/tools/test/malloc/malloc.c b/tools/test/malloc/main.c similarity index 72% rename from tools/test/malloc/malloc.c rename to tools/test/malloc/main.c index a865b9edcf4c..4d1d380df906 100644 --- a/tools/test/malloc/malloc.c +++ b/tools/test/malloc/main.c @@ -19,16 +19,22 @@ main(int argc, char **argv) printf("BRK(0)=%x ",sbrk(0)); foo = malloc (sizeof *foo * NBUCKETS); memset(foo,0,sizeof *foo * NBUCKETS); - for (i = 0 ; i < NOPS ; i++) { - j = rand() % NBUCKETS; - if (foo[j]) { + for (i = 1; i <= 4096; i+=i) { + for (j = 0 ; j < 40960/i && j < NBUCKETS; j++) { + foo[j] = malloc(i); + } + for (j = 0 ; j < 40960/i && j < NBUCKETS; j++) { free(foo[j]); foo[j] = 0; - } else { - k = rand() % NSIZE; - foo[j] = malloc(k); + } + } + + for (i = 0 ; i < NOPS ; i++) { + j = random() % NBUCKETS; + k = random() % NSIZE; + foo[j] = realloc(foo[j], k & 1 ? 0 : k); + if (foo[j]) foo[j][0] = 1; - } } printf("BRK(1)=%x ",sbrk(0)); for (j = 0 ; j < NBUCKETS ; j++) {