From 59991950113e7850b20bf2f083c405fe95fa8abe Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Wed, 19 Apr 2000 17:19:08 -0500 Subject: [svn-r2157] Changed hashing scheme slightly to better spread out the hash values returned. --- src/H5AC.c | 3 ++- src/H5ACprivate.h | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/H5AC.c b/src/H5AC.c index 1dbcaaf..909878b 100644 --- a/src/H5AC.c +++ b/src/H5AC.c @@ -494,6 +494,7 @@ H5AC_set(H5F_t *f, const H5AC_class_t *type, haddr_t addr, void *thing) } #endif + if (slot->type) { flush = slot->type->flush; status = (flush)(f, TRUE, slot->addr, slot->thing); @@ -666,7 +667,7 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, cache->diagnostics[slot->type->id].nhits++; thing = slot->thing; slot->type = NULL; - slot->addr = HADDR_UNDEF; + slot->addr = HADDR_UNDEF; slot->thing = NULL; } else if (slot->type && H5F_addr_eq(slot->addr, addr)) { diff --git a/src/H5ACprivate.h b/src/H5ACprivate.h index 17d9e06..34f8121 100644 --- a/src/H5ACprivate.h +++ b/src/H5ACprivate.h @@ -71,8 +71,11 @@ typedef struct H5AC_class_t { * cache entry by hashing the object's file address. Each file has its * own cache, an array of slots. */ -#define H5AC_NSLOTS 10330 /*prime number tend to work best */ -#define H5AC_HASH(F,ADDR) H5F_addr_hash(ADDR,(F)->shared->cache->nslots) +#define H5AC_NSLOTS 10330 /* The library "likes" this number... */ +#define H5AC_HASH_DIVISOR 8 /* Attempt to spread out the hashing */ + /* This should be the same size as the alignment of */ + /* of the smallest file format object written to the file. */ +#define H5AC_HASH(F,ADDR) H5F_addr_hash((ADDR/H5AC_HASH_DIVISOR),(F)->shared->cache->nslots) typedef struct H5AC_prot_t { const H5AC_class_t *type; /*type of protected thing */ -- cgit v0.12