diff options
author | Vailin Choi <vchoi@jam.ad.hdfgroup.org> | 2019-02-05 04:30:48 (GMT) |
---|---|---|
committer | Vailin Choi <vchoi@jam.ad.hdfgroup.org> | 2019-02-05 04:30:48 (GMT) |
commit | 7f718e9ea232a84ec2be1b52f25f152de775fdac (patch) | |
tree | 0d2fdf5a717cf0a4ca8781a40e0fa467ddd88e7b /src/H5Cpkg.h | |
parent | 08001e2f3f17b17889fae655a6ed6cef7747d729 (diff) | |
download | hdf5-7f718e9ea232a84ec2be1b52f25f152de775fdac.zip hdf5-7f718e9ea232a84ec2be1b52f25f152de775fdac.tar.gz hdf5-7f718e9ea232a84ec2be1b52f25f152de775fdac.tar.bz2 |
There is performance issue when closing an object. The slow down is due to the search of
the "tag_list" to find out the "corked" status of an object.
The fix:
(1) Add a counter "num_objs_corked" in the cache structure to track the number
of "corked" objects.
(2) Skip the search of "tag_list" if the counter is zero i.e. no "corked" objects.
Diffstat (limited to 'src/H5Cpkg.h')
-rw-r--r-- | src/H5Cpkg.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/H5Cpkg.h b/src/H5Cpkg.h index 9201afb..9156c0d 100644 --- a/src/H5Cpkg.h +++ b/src/H5Cpkg.h @@ -3823,6 +3823,13 @@ typedef struct H5C_tag_info_t { * * ignore_tags: Boolean flag to disable tag validation during entry insertion. * + * num_objs_corked: Unsigned integer field containing the number of objects + * that are "corked". The "corked" status of an object is + * found by searching the "tag_list". This field is added + * for optimization so that the skip list search on "tag_list" + * can be skipped if this field is zero, i.e. no "corked" + * objects. + * * When a cache entry is protected, it must be removed from the LRU * list(s) as it cannot be either flushed or evicted until it is unprotected. * The following fields are used to implement the protected list (pl). @@ -4693,6 +4700,7 @@ struct H5C_t { /* Fields for maintaining list of tagged entries */ H5SL_t * tag_list; hbool_t ignore_tags; + uint32_t num_objs_corked; /* Fields for tracking protected entries */ uint32_t pl_len; |