From 7edcd3ea771f1894f0cf06d0057328837b4cfd17 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 20 Feb 2011 08:43:44 +0100 Subject: [PATCH] Permit disabling of A* neighbor cache at compile-time Mostly to measure its effectiveness. Compile with AS_NO_NEIGHBOR_CACHE defined to disable it. The neighbor cache turns out to be useless in my tests: it eats memory without speeding up the update's distribution path assembly. --- src/lib/common/path.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/common/path.c b/src/lib/common/path.c index f36d48289..58fded858 100644 --- a/src/lib/common/path.c +++ b/src/lib/common/path.c @@ -40,6 +40,10 @@ * Define AS_NO_PATH_CACHE to disable the path cache. The path cache * saves a lot of work, but uses lots of memory. It should be a * significant net win, unless you run out of memory. + * + * Define AS_NO_NEIGHBOR_CACHE to disable the neighbor cache. The + * neighbor cache trades a modest amount of memory to save a bit of + * work. In its current form, it doesn't really make a difference. */ #include @@ -87,8 +91,10 @@ bp_init(void) if (bp->adp == NULL) return NULL; +#ifndef AS_NO_NEIGHBOR_CACHE if (neighsects == NULL) neighsects = calloc(WORLD_SZ() * 6, sizeof(struct sctstr *)); +#endif return bp; } @@ -125,8 +131,10 @@ best_path(struct sctstr *from, struct sctstr *to, char *path, int mob_type) res = as_search(adp); #ifdef AS_STATS as_stats(adp, stderr); +#ifndef AS_NO_NEIGHBOR_CACHE fprintf(stderr, "neighbor cache %zu bytes\n", WORLD_SZ() * 6 * sizeof(struct sctstr *)); +#endif #endif if (res < 0) return -1; -- 2.43.0