/* Copyright (C) 1997 DJ Delorie, see COPYING.DJ for details */ #include #include #include #include #include #include #include #include #define MAXP 400 #define SUBP 20 #define NPASS 25 #define NLOOP 12 double metrics[NLOOP]; int lrand() { static unsigned long long next = 0; next = next * 0x5deece66dLL + 11; return (int)((next >> 16) & 0x7fffffff); } char *pointers[MAXP]; int size[MAXP]; int rsize() { int rv = 8 << (lrand() % 15); rv = lrand() & (rv-1); return rv; } #ifdef TESTMALLOC #define malloc test_malloc #define free test_free #define realloc test_realloc #endif main(int argc, char **argv) { int i, r, loop, pass, subpass; int start_time, end_time; char *start_mem, *end_mem; struct tms tms; double elapsed; int absmax=0, curmax=0; FILE *f; int realloc_mask = -1; double iscale = 1.5; char *metrics_name = "test0.mtr"; char *ideal_name = "ideal.out"; if (argc > 1 && strcmp(argv[1], "-r") == 0) { realloc_mask = 48; iscale = 4; metrics_name = "test0.rtr"; ideal_name = "ideal.rout"; } setbuf(stdout, 0); memset(pointers, 0, MAXP*sizeof(pointers[0])); #ifndef TEST0 f = fopen(metrics_name, "rb"); if (f) { setbuf(f, 0); fread(metrics, 1, sizeof(metrics), f); fclose(f); } else memset(metrics, 0, sizeof(metrics)); #endif times(&tms); start_time = tms.tms_utime; start_mem = sbrk(0); for (loop=0; loop