begin patches/patch-ac: This patch removes the code that tries to figure out the cache size of the host. The algorithm may very well fail under some circumstances -- it makes too many assumptions about the cache behaviour, but most importantly, the figured out values ARE NOT USED anywhere in the ghostscript code anymore. -mi --- src/genarch.c Thu Mar 9 03:40:41 2000 +++ src/genarch.c Wed Jul 19 09:37:30 2000 @@ -43,11 +42,0 @@ -private clock_t -time_clear(char *buf, int bsize, int nreps) -{ - clock_t t = clock(); - int i; - - for (i = 0; i < nreps; ++i) - memset(buf, 0, bsize); - return clock() - t; -} - @@ -181,63 +170,2 @@ #undef PRINT_MAX - - section(f, "Cache sizes"); - - /* - * Determine the primary and secondary cache sizes by looking for a - * non-linearity in the time required to fill blocks with memset. - */ - { -#define MAX_BLOCK (1 << 20) - static char buf[MAX_BLOCK]; - int bsize = 1 << 10; - int nreps = 1; - clock_t t = 0; - clock_t t_eps; - - /* - * Increase the number of repetitions until the time is - * long enough to exceed the likely uncertainty. - */ - - while ((t = time_clear(buf, bsize, nreps)) == 0) - nreps <<= 1; - t_eps = t; - while ((t = time_clear(buf, bsize, nreps)) < t_eps * 10) - nreps <<= 1; - - /* - * Increase the block size until the time jumps non-linearly. - */ - for (; bsize <= MAX_BLOCK;) { - clock_t dt = time_clear(buf, bsize, nreps); - - if (dt > t + (t >> 1)) { - t = dt; - break; - } - bsize <<= 1; - nreps >>= 1; - if (nreps == 0) - nreps = 1, t <<= 1; - } - define_int(f, "ARCH_CACHE1_SIZE", bsize >> 1); - /* - * Do the same thing a second time for the secondary cache. - */ - if (nreps > 1) - nreps >>= 1, t >>= 1; - for (; bsize <= MAX_BLOCK;) { - clock_t dt = time_clear(buf, bsize, nreps); - - if (dt > t * 1.25) { - t = dt; - break; - } - bsize <<= 1; - nreps >>= 1; - if (nreps == 0) - nreps = 1, t <<= 1; - } - define_int(f, "ARCH_CACHE2_SIZE", bsize >> 1); - }