mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-04 22:33:27 +00:00
9f1c27c0ec
PR: 20038 Submitted by: Mikhail Teterin <mi@aldan.algebra.com>
88 lines
2.0 KiB
Plaintext
88 lines
2.0 KiB
Plaintext
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);
|
|
- }
|
|
|