summaryrefslogtreecommitdiffstats
path: root/src/H5Sselect.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2004-04-06 13:13:05 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2004-04-06 13:13:05 (GMT)
commitfc152eff1c4a7118f43bddb6ac3c9b3c4d69bfac (patch)
tree32b827b1ee2be3a49f159225c2597de10a4cd248 /src/H5Sselect.c
parent3a0524dfa9d0067392c9a8bbb9a31934aa8e90ba (diff)
downloadhdf5-fc152eff1c4a7118f43bddb6ac3c9b3c4d69bfac.zip
hdf5-fc152eff1c4a7118f43bddb6ac3c9b3c4d69bfac.tar.gz
hdf5-fc152eff1c4a7118f43bddb6ac3c9b3c4d69bfac.tar.bz2
[svn-r8302] Purpose:
Code optimization Description: Move handling for free list arrays that have no maximum size to separate set of routines and optimize computations for free list arrays with maximum size to avoid re-computing sizes all the time. Platforms tested: h5committest Solaris 2.7 (arabica)
Diffstat (limited to 'src/H5Sselect.c')
-rw-r--r--src/H5Sselect.c91
1 files changed, 47 insertions, 44 deletions
diff --git a/src/H5Sselect.c b/src/H5Sselect.c
index 6eac242..c35f13e 100644
--- a/src/H5Sselect.c
+++ b/src/H5Sselect.c
@@ -44,12 +44,15 @@ static herr_t H5S_select_iter_next_block(H5S_sel_iter_t *iter);
/* Declare external the free list for hssize_t arrays */
H5FL_ARR_EXTERN(hssize_t);
-/* Declare a free list to manage arrays of size_t */
-H5FL_ARR_DEFINE_STATIC(size_t,-1);
-
-/* Declare a free list to manage arrays of hsize_t */
+/* Declare external the free list for hsize_t arrays */
H5FL_ARR_EXTERN(hsize_t);
+/* Declare a free list to manage sequences of size_t */
+H5FL_SEQ_DEFINE_STATIC(size_t);
+
+/* Declare a free list to manage sequences of hsize_t */
+H5FL_SEQ_DEFINE_STATIC(hsize_t);
+
/* Declare a free list to manage blocks of single datatype element data */
H5FL_BLK_EXTERN(type_elem);
@@ -985,9 +988,9 @@ H5S_select_iterate(void *buf, hid_t type_id, const H5S_t *space, H5D_operator_t
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Get the datatype size */
@@ -1071,9 +1074,9 @@ done:
/* Release length & offset vectors */
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
FUNC_LEAVE_NOAPI(ret_value);
} /* end H5S_select_iterate() */
@@ -1428,9 +1431,9 @@ H5S_select_fill(void *_fill, size_t fill_size, const H5S_t *space, void *_buf)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Initialize iterator */
@@ -1475,9 +1478,9 @@ done:
/* Release length & offset vectors */
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
/* Release fill value, if allocated */
if(_fill==NULL && fill)
@@ -1542,9 +1545,9 @@ H5S_select_fscat (H5F_t *f, struct H5O_layout_t *layout,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Compute the number of bytes available in buffer */
@@ -1575,9 +1578,9 @@ H5S_select_fscat (H5F_t *f, struct H5O_layout_t *layout,
done:
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
FUNC_LEAVE_NOAPI(ret_value);
} /* H5S_select_fscat() */
@@ -1641,9 +1644,9 @@ H5S_select_fgath (H5F_t *f, const struct H5O_layout_t *layout,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, 0, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, "can't allocate I/O offset vector array");
/* Compute the number of bytes available in buffer */
@@ -1674,9 +1677,9 @@ H5S_select_fgath (H5F_t *f, const struct H5O_layout_t *layout,
done:
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
FUNC_LEAVE_NOAPI(ret_value);
} /* H5S_select_fgath() */
@@ -1729,9 +1732,9 @@ H5S_select_mscat (const void *_tscat_buf, size_t elmt_size, const H5S_t *space,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Compute the number of bytes available in buffer */
@@ -1761,9 +1764,9 @@ H5S_select_mscat (const void *_tscat_buf, size_t elmt_size, const H5S_t *space,
done:
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
FUNC_LEAVE_NOAPI(ret_value);
} /* H5S_select_mscat() */
@@ -1818,9 +1821,9 @@ H5S_select_mgath (const void *_buf, size_t elmt_size, const H5S_t *space,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, 0, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, "can't allocate I/O length vector array");
- if((off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, "can't allocate I/O offset vector array");
/* Compute the number of bytes available in buffer */
@@ -1850,9 +1853,9 @@ H5S_select_mgath (const void *_buf, size_t elmt_size, const H5S_t *space,
done:
if(len!=NULL)
- H5FL_ARR_FREE(size_t,len);
+ H5FL_SEQ_FREE(size_t,len);
if(off!=NULL)
- H5FL_ARR_FREE(hsize_t,off);
+ H5FL_SEQ_FREE(hsize_t,off);
FUNC_LEAVE_NOAPI(ret_value);
} /* H5S_select_mgath() */
@@ -1918,13 +1921,13 @@ H5S_select_read(H5F_t *f, const H5O_layout_t *layout, H5P_genplist_t *dc_plist,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((mem_len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((mem_len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((mem_off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((mem_off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
- if((file_len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((file_len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((file_off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((file_off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Get number of bytes in selection */
@@ -1995,13 +1998,13 @@ done:
/* Free vector arrays */
if(file_len!=NULL)
- H5FL_ARR_FREE(size_t,file_len);
+ H5FL_SEQ_FREE(size_t,file_len);
if(file_off!=NULL)
- H5FL_ARR_FREE(hsize_t,file_off);
+ H5FL_SEQ_FREE(hsize_t,file_off);
if(mem_len!=NULL)
- H5FL_ARR_FREE(size_t,mem_len);
+ H5FL_SEQ_FREE(size_t,mem_len);
if(mem_off!=NULL)
- H5FL_ARR_FREE(hsize_t,mem_off);
+ H5FL_SEQ_FREE(hsize_t,mem_off);
FUNC_LEAVE_NOAPI(ret_value);
} /* end H5S_select_read() */
@@ -2066,13 +2069,13 @@ H5S_select_write(H5F_t *f, H5O_layout_t *layout, H5P_genplist_t *dc_plist,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "unable to get I/O vector size");
/* Allocate the vector I/O arrays */
- if((mem_len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((mem_len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((mem_off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((mem_off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
- if((file_len = H5FL_ARR_MALLOC(size_t,(size_t)vector_size))==NULL)
+ if((file_len = H5FL_SEQ_MALLOC(size_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O length vector array");
- if((file_off = H5FL_ARR_MALLOC(hsize_t,(size_t)vector_size))==NULL)
+ if((file_off = H5FL_SEQ_MALLOC(hsize_t,(size_t)vector_size))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't allocate I/O offset vector array");
/* Initialize file iterator */
@@ -2186,13 +2189,13 @@ done:
/* Free vector arrays */
if(file_len!=NULL)
- H5FL_ARR_FREE(size_t,file_len);
+ H5FL_SEQ_FREE(size_t,file_len);
if(file_off!=NULL)
- H5FL_ARR_FREE(hsize_t,file_off);
+ H5FL_SEQ_FREE(hsize_t,file_off);
if(mem_len!=NULL)
- H5FL_ARR_FREE(size_t,mem_len);
+ H5FL_SEQ_FREE(size_t,mem_len);
if(mem_off!=NULL)
- H5FL_ARR_FREE(hsize_t,mem_off);
+ H5FL_SEQ_FREE(hsize_t,mem_off);
#ifdef QAK
{
int mpi_rank;