diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2004-06-14 19:33:08 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2004-06-14 19:33:08 (GMT) |
commit | ffbd43d88b496f1ee745aaeb5fd6d2117f510b82 (patch) | |
tree | c2c273eff29abf9a62be4ba9ceb48cedfa053719 /src/H5Sselect.c | |
parent | 3247aa351eb300b408e64be3a0b81910374d1327 (diff) | |
download | hdf5-ffbd43d88b496f1ee745aaeb5fd6d2117f510b82.zip hdf5-ffbd43d88b496f1ee745aaeb5fd6d2117f510b82.tar.gz hdf5-ffbd43d88b496f1ee745aaeb5fd6d2117f510b82.tar.bz2 |
[svn-r8684] Purpose:
Code optimization
Description:
Use 'size_t' instead of 'hsize_t' to track the number of elements in
memory buffers, especially for type conversion.
Platforms tested:
Solaris 2.7 (arabica)
FreeBSD 4.10 (sleipnir) w/parallel
Too minor to require h5committest
Diffstat (limited to 'src/H5Sselect.c')
-rw-r--r-- | src/H5Sselect.c | 75 |
1 files changed, 39 insertions, 36 deletions
diff --git a/src/H5Sselect.c b/src/H5Sselect.c index ca6bb7d..891e812 100644 --- a/src/H5Sselect.c +++ b/src/H5Sselect.c @@ -1345,15 +1345,28 @@ HDfprintf(stderr,"%s: Entering\n",FUNC); if (space1->extent.rank!=space2->extent.rank) HGOTO_DONE(FALSE); +#ifdef QAK +HDfprintf(stderr,"%s: Check 0.5\n",FUNC); +HDfprintf(stderr,"%s: space1 selection type=%d\n",FUNC,(int)H5S_GET_SELECT_TYPE(space1)); +HDfprintf(stderr,"%s: space1->select.num_elem=%Hd\n",FUNC,space1->select.num_elem); +HDfprintf(stderr,"%s: space2 selection type=%d\n",FUNC,(int)H5S_GET_SELECT_TYPE(space2)); +HDfprintf(stderr,"%s: space2->select.num_elem=%Hd\n",FUNC,space2->select.num_elem); +#endif /* QAK */ /* Check for different number of elements selected */ if(H5S_GET_SELECT_NPOINTS(space1)!=H5S_GET_SELECT_NPOINTS(space2)) HGOTO_DONE(FALSE); +#ifdef QAK +HDfprintf(stderr,"%s: Check 1.0\n",FUNC); +#endif /* QAK */ /* Check for "easy" cases before getting into generalized block iteration code */ if(H5S_GET_SELECT_TYPE(space1)==H5S_SEL_ALL && H5S_GET_SELECT_TYPE(space2)==H5S_SEL_ALL) { hsize_t dims1[H5O_LAYOUT_NDIMS]; /* End point of selection block in dataspace #1 */ hsize_t dims2[H5O_LAYOUT_NDIMS]; /* End point of selection block in dataspace #2 */ +#ifdef QAK +HDfprintf(stderr,"%s: Check 2.0\n",FUNC); +#endif /* QAK */ if(H5S_get_simple_extent_dims(space1, dims1, NULL)<0) HGOTO_ERROR (H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to get dimensionality"); if(H5S_get_simple_extent_dims(space2, dims2, NULL)<0) @@ -1365,11 +1378,17 @@ HDfprintf(stderr,"%s: Entering\n",FUNC); HGOTO_DONE(FALSE); } /* end if */ else if(H5S_GET_SELECT_TYPE(space1)==H5S_SEL_NONE || H5S_GET_SELECT_TYPE(space2)==H5S_SEL_NONE) { +#ifdef QAK +HDfprintf(stderr,"%s: Check 3.0\n",FUNC); +#endif /* QAK */ HGOTO_DONE(TRUE); } /* end if */ else if((H5S_GET_SELECT_TYPE(space1)==H5S_SEL_HYPERSLABS && space1->select.sel_info.hslab->diminfo_valid) && (H5S_GET_SELECT_TYPE(space2)==H5S_SEL_HYPERSLABS && space2->select.sel_info.hslab->diminfo_valid)) { +#ifdef QAK +HDfprintf(stderr,"%s: Check 4.0\n",FUNC); +#endif /* QAK */ /* Check that the shapes are the same */ for (u=0; u<space1->extent.rank; u++) { if(space1->select.sel_info.hslab->opt_diminfo[u].stride!=space2->select.sel_info.hslab->opt_diminfo[u].stride) @@ -1642,7 +1661,7 @@ done: herr_t H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, H5D_t *dset, const H5D_storage_t *store, - const H5S_t *space, H5S_sel_iter_t *iter, hsize_t nelmts, + const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts, const void *_buf) { const uint8_t *buf=_buf; /* Alias for pointer arithmetic */ @@ -1654,7 +1673,6 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */ size_t *len=NULL; /* Array to store sequence lengths */ size_t orig_mem_len, mem_len; /* Length of sequence in memory */ - size_t maxelem; /* Number of elements in the buffer */ size_t nseq; /* Number of sequences generated */ size_t nelem; /* Number of elements used in sequences */ herr_t ret_value=SUCCEED; /* Return value */ @@ -1683,13 +1701,10 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, off=_off; } /* end else */ - /* Compute the number of bytes available in buffer */ - H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t); - /* Loop until all elements are written */ - while(maxelem>0) { + while(nelmts>0) { /* Get list of sequences for selection to write */ - if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0) + if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0) HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, FAIL, "sequence length generation failed"); /* Reset the current sequence information */ @@ -1705,7 +1720,7 @@ H5S_select_fscat (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, buf += orig_mem_len; /* Decrement number of elements left to process */ - maxelem -= nelem; + nelmts -= nelem; } /* end while */ done: @@ -1742,10 +1757,10 @@ done: * *------------------------------------------------------------------------- */ -hsize_t +size_t H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, H5D_t *dset, const H5D_storage_t *store, - const H5S_t *space, H5S_sel_iter_t *iter, hsize_t nelmts, + const H5S_t *space, H5S_sel_iter_t *iter, size_t nelmts, void *_buf/*out*/) { uint8_t *buf=_buf; /* Alias for pointer arithmetic */ @@ -1757,10 +1772,9 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */ size_t *len=NULL; /* Pointer to sequence lengths */ size_t orig_mem_len, mem_len; /* Length of sequence in memory */ - size_t maxelem; /* Number of elements in the buffer */ size_t nseq; /* Number of sequences generated */ size_t nelem; /* Number of elements used in sequences */ - hsize_t ret_value=nelmts; /* Return value */ + size_t ret_value=nelmts; /* Return value */ FUNC_ENTER_NOAPI(H5S_select_fgath, 0); @@ -1785,13 +1799,10 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, off=_off; } /* end else */ - /* Compute the number of elements available in buffer */ - H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t); - /* Loop until all elements are written */ - while(maxelem>0) { + while(nelmts>0) { /* Get list of sequences for selection to write */ - if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0) + if(H5S_SELECT_GET_SEQ_LIST(space,H5S_GET_SEQ_LIST_SORTED,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0) HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed"); /* Reset the current sequence information */ @@ -1807,7 +1818,7 @@ H5S_select_fgath (H5F_t *f, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id, buf += orig_mem_len; /* Decrement number of elements left to process */ - maxelem -= nelem; + nelmts -= nelem; } /* end while */ done: @@ -1840,7 +1851,7 @@ done: */ herr_t H5S_select_mscat (const void *_tscat_buf, const H5S_t *space, - H5S_sel_iter_t *iter, hsize_t nelmts, const H5D_dxpl_cache_t *dxpl_cache, + H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache, void *_buf/*out*/) { uint8_t *buf=(uint8_t *)_buf; /* Get local copies for address arithmetic */ @@ -1850,7 +1861,6 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space, size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */ size_t *len=NULL; /* Pointer to sequence lengths */ size_t curr_len; /* Length of bytes left to process in sequence */ - size_t maxelem; /* Number of elements in the buffer */ size_t nseq; /* Number of sequences generated */ size_t curr_seq; /* Current sequence being processed */ size_t nelem; /* Number of elements used in sequences */ @@ -1877,13 +1887,10 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space, off=_off; } /* end else */ - /* Compute the number of elements available in buffer */ - H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t); - /* Loop until all elements are written */ - while(maxelem>0) { + while(nelmts>0) { /* Get list of sequences for selection to write */ - if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0) + if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0) HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed"); /* Loop, while sequences left to process */ @@ -1898,7 +1905,7 @@ H5S_select_mscat (const void *_tscat_buf, const H5S_t *space, } /* end for */ /* Decrement number of elements left to process */ - maxelem -= nelem; + nelmts -= nelem; } /* end while */ done: @@ -1931,9 +1938,9 @@ done: * *------------------------------------------------------------------------- */ -hsize_t +size_t H5S_select_mgath (const void *_buf, const H5S_t *space, - H5S_sel_iter_t *iter, hsize_t nelmts, const H5D_dxpl_cache_t *dxpl_cache, + H5S_sel_iter_t *iter, size_t nelmts, const H5D_dxpl_cache_t *dxpl_cache, void *_tgath_buf/*out*/) { const uint8_t *buf=(const uint8_t *)_buf; /* Get local copies for address arithmetic */ @@ -1943,11 +1950,10 @@ H5S_select_mgath (const void *_buf, const H5S_t *space, size_t _len[H5D_XFER_HYPER_VECTOR_SIZE_DEF]; /* Array to store sequence lengths */ size_t *len=NULL; /* Pointer to sequence lengths */ size_t curr_len; /* Length of bytes left to process in sequence */ - size_t maxelem; /* Number of elements in the buffer */ size_t nseq; /* Number of sequences generated */ size_t curr_seq; /* Current sequence being processed */ size_t nelem; /* Number of elements used in sequences */ - hsize_t ret_value=nelmts; /* Number of elements gathered */ + size_t ret_value=nelmts; /* Number of elements gathered */ FUNC_ENTER_NOAPI(H5S_select_mgath, 0); @@ -1970,13 +1976,10 @@ H5S_select_mgath (const void *_buf, const H5S_t *space, off=_off; } /* end else */ - /* Compute the number of elements available in buffer */ - H5_ASSIGN_OVERFLOW(maxelem,nelmts,hsize_t,size_t); - /* Loop until all elements are written */ - while(maxelem>0) { + while(nelmts>0) { /* Get list of sequences for selection to write */ - if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,maxelem,&nseq,&nelem,off,len)<0) + if(H5S_SELECT_GET_SEQ_LIST(space,0,iter,dxpl_cache->vec_size,nelmts,&nseq,&nelem,off,len)<0) HGOTO_ERROR (H5E_INTERNAL, H5E_UNSUPPORTED, 0, "sequence length generation failed"); /* Loop, while sequences left to process */ @@ -1991,7 +1994,7 @@ H5S_select_mgath (const void *_buf, const H5S_t *space, } /* end for */ /* Decrement number of elements left to process */ - maxelem -= nelem; + nelmts -= nelem; } /* end while */ done: |