summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2012-10-19 21:40:32 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2012-10-19 21:40:32 (GMT)
commitc61b885e8668ec0530032a87e8d5b762a248e069 (patch)
tree0c25132b9bf372fcf02cd22970e8cf898a4374ce
parentcaf88044e7210dcad25723c4c302370332fd3908 (diff)
downloadhdf5-c61b885e8668ec0530032a87e8d5b762a248e069.zip
hdf5-c61b885e8668ec0530032a87e8d5b762a248e069.tar.gz
hdf5-c61b885e8668ec0530032a87e8d5b762a248e069.tar.bz2
[svn-r22934] Purpose:
HDFFV-8145 h5diff slowness with version >= 1.8.7 Description: Improved speed when comparing HDF5 files with lots of attributes. Much slower performance was identified with release version from 1.8.7 to 1.8.10 compared to 1.8.6. Merged from HDF5 trunk r22933. Tested: jam (linux32-LE), koala (linux64-LE), ostrich (linuxppc64-BE), tejeda (mac32-LE), cmake (jam)
-rw-r--r--release_docs/RELEASE.txt4
-rw-r--r--tools/lib/h5diff_attr.c18
2 files changed, 21 insertions, 1 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 4e856b8..71741a9 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -107,7 +107,9 @@ Bug Fixes since HDF5-1.8.10
Tools
-----
- - None
+ - h5diff: Improved speed when comparing HDF5 files with lots of
+ attributes. Much slower performance was identified with release version
+ from 1.8.7 to 1.8.10 compared to 1.8.6. (JKM 2012/10/19)
F90 API
-------
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 144159a..130a0d8 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -207,6 +207,12 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_lp->nattrs_only2++;
curr2++;
}
+
+ /* close for next turn */
+ H5Aclose(attr1_id);
+ attr1_id = -1;
+ H5Aclose(attr2_id);
+ attr2_id = -1;
} /* end while */
/* list1 did not end */
@@ -225,6 +231,10 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_attr_mark_exist(infile, name1, table_lp);
table_lp->nattrs_only1++;
curr1++;
+
+ /* close for next turn */
+ H5Aclose(attr1_id);
+ attr1_id = -1;
}
/* list2 did not end */
@@ -243,6 +253,9 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_attr_mark_exist(infile, name2, table_lp);
table_lp->nattrs_only2++;
curr2++;
+
+ /* close for next turn */
+ H5Aclose(attr2_id);
}
/*------------------------------------------------------
@@ -272,6 +285,11 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
return 0;
error:
+ if (0 < attr1_id)
+ H5Aclose(attr1_id);
+ if (0 < attr2_id)
+ H5Aclose(attr2_id);
+
return -1;
}