summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2010-11-11 16:55:51 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2010-11-11 16:55:51 (GMT)
commitbea08cb3a83b1d0c0b4a9795a6c68df8c68e235b (patch)
tree958ac4451c084207a1f147d60adc548d08de1bbb
parentb82c6a4f62f19a88f5d88cff1158db06317231f9 (diff)
downloadhdf5-bea08cb3a83b1d0c0b4a9795a6c68df8c68e235b.zip
hdf5-bea08cb3a83b1d0c0b4a9795a6c68df8c68e235b.tar.gz
hdf5-bea08cb3a83b1d0c0b4a9795a6c68df8c68e235b.tar.bz2
[svn-r19760] Purpose:
Fix compile error for Windows from previous checkin r19758. Description: Previous log: Improve h5diff performance. The following changes for improving h5diff performance: 1) use HDmemcmp() before comparing each elements (memcmp() is very fast at both linew and jam) 2) replace the expensive H5Tequals() calls 3) retrieve datatype information at dataset level not each element level for compound datasets Tested: jam (linux32-LE), Windows
-rw-r--r--tools/lib/h5diff_array.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index fa6b533..fbac313 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -6079,6 +6079,8 @@ static void h5diff_print_char(char ch)
*/
static void set_comp_members(hid_t tid, mcomp_t *members)
{
+ int i;
+
if (tid <=0 || !members)
return;
@@ -6094,11 +6096,13 @@ static void set_comp_members(hid_t tid, mcomp_t *members)
members->offsets = HDcalloc(members->n, sizeof(size_t));
members->m = HDcalloc(members->n, sizeof(mcomp_t *));
- for (int i=0; i< members->n; i++) {
+ for (i=0; i< members->n; i++)
+ {
members->ids[i] = H5Tget_member_type( tid, i );
members->flags[i] = H5Tis_variable_str( members->ids[i] );
members->offsets[i] = H5Tget_member_offset( tid, i );
- if (H5Tget_class( members->ids[i])==H5T_COMPOUND) {
+ if (H5Tget_class( members->ids[i])==H5T_COMPOUND)
+ {
members->m[i] = (mcomp_t *)HDmalloc(sizeof(mcomp_t));
set_comp_members(members->ids[i], members->m[i]);
}
@@ -6112,11 +6116,15 @@ static void set_comp_members(hid_t tid, mcomp_t *members)
*/
static void free_comp_members(mcomp_t *members)
{
+ int i;
+
if (!members || members->n<=0 || !members->ids)
return;
- for (int i=0; i<members->n; i++) {
- if (members->m[i]) {
+ for (i=0; i<members->n; i++)
+ {
+ if (members->m[i])
+ {
free_comp_members(members->m[i]);
HDfree(members->m[i]);
}