]> git.pond.sub.org Git - empserver/commitdiff
Permit disabling of A* neighbor cache at compile-time
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 20 Feb 2011 07:43:44 +0000 (08:43 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 12 Apr 2011 19:40:08 +0000 (21:40 +0200)
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

index f36d48289645b0885664a4c90033678cf2b2d698..58fded85820a86dd5c5280b8c188abb1f70c2ae6 100644 (file)
  * 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 <config.h>
@@ -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;