summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2000-04-19 22:19:08 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2000-04-19 22:19:08 (GMT)
commit59991950113e7850b20bf2f083c405fe95fa8abe (patch)
tree963520c0da8ed0a23f78d6a31e094e5979dd90ea
parent395326672ca315c4c2fea30de233c3a412fb69d9 (diff)
downloadhdf5-59991950113e7850b20bf2f083c405fe95fa8abe.zip
hdf5-59991950113e7850b20bf2f083c405fe95fa8abe.tar.gz
hdf5-59991950113e7850b20bf2f083c405fe95fa8abe.tar.bz2
[svn-r2157] Changed hashing scheme slightly to better spread out the hash values returned.
-rw-r--r--src/H5AC.c3
-rw-r--r--src/H5ACprivate.h7
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 */