diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-09-23 21:04:46 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-09-23 21:04:46 (GMT) |
commit | 84540ce6d1708e98c152276f524c938435da804c (patch) | |
tree | bc9a3f4f5f57c8c1b41f88dafb11c9b107ad8623 /src/H5Defl.c | |
parent | 308982f2359c32277144636d1f62cf20af1b0972 (diff) | |
download | hdf5-84540ce6d1708e98c152276f524c938435da804c.zip hdf5-84540ce6d1708e98c152276f524c938435da804c.tar.gz hdf5-84540ce6d1708e98c152276f524c938435da804c.tar.bz2 |
[svn-r19477] Description:
Bring r19476 from trunk to 1.8 branch:
Polish the vectorized memory <-> memory and memory <-> file I/O
routines to speed them up a little bit (~10%)
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
(h5committested on trunk)
Diffstat (limited to 'src/H5Defl.c')
-rw-r--r-- | src/H5Defl.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/src/H5Defl.c b/src/H5Defl.c index b0233d4..87471f1 100644 --- a/src/H5Defl.c +++ b/src/H5Defl.c @@ -420,11 +420,9 @@ H5D_efl_readvv(const H5D_io_info_t *io_info, const H5O_efl_t *efl = &(io_info->store->efl); /* Pointer to efl info */ unsigned char *buf; /* Pointer to buffer to write */ haddr_t addr; /* Actual address to read */ - size_t total_size = 0; /* Total size of sequence in bytes */ size_t size; /* Size of sequence in bytes */ - size_t u; /* Counting variable */ - size_t v; /* Counting variable */ - ssize_t ret_value; /* Return value */ + size_t u, v; /* Counting variables */ + ssize_t ret_value = 0; /* Return value (Total size of sequence in bytes) */ FUNC_ENTER_NOAPI_NOINIT(H5D_efl_readvv) @@ -452,27 +450,26 @@ H5D_efl_readvv(const H5D_io_info_t *io_info, /* Update memory information */ mem_len_arr[v] -= size; - mem_offset_arr[v] += size; if(mem_len_arr[v] == 0) v++; + else + mem_offset_arr[v] += size; /* Update file information */ dset_len_arr[u] -= size; - dset_offset_arr[u] += size; if(dset_len_arr[u] == 0) u++; + else + dset_offset_arr[u] += size; /* Increment number of bytes copied */ - total_size += size; + ret_value += (ssize_t)size; } /* end for */ /* Update current sequence vectors */ *dset_curr_seq = u; *mem_curr_seq = v; - /* Set return value */ - H5_ASSIGN_OVERFLOW(ret_value, total_size, size_t, ssize_t); - done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D_efl_readvv() */ @@ -501,11 +498,9 @@ H5D_efl_writevv(const H5D_io_info_t *io_info, const H5O_efl_t *efl = &(io_info->store->efl); /* Pointer to efl info */ const unsigned char *buf; /* Pointer to buffer to write */ haddr_t addr; /* Actual address to read */ - size_t total_size = 0; /* Total size of sequence in bytes */ size_t size; /* Size of sequence in bytes */ - size_t u; /* Counting variable */ - size_t v; /* Counting variable */ - ssize_t ret_value; /* Return value */ + size_t u, v; /* Counting variables */ + ssize_t ret_value = 0; /* Return value (Total size of sequence in bytes) */ FUNC_ENTER_NOAPI_NOINIT(H5D_efl_writevv) @@ -533,27 +528,26 @@ H5D_efl_writevv(const H5D_io_info_t *io_info, /* Update memory information */ mem_len_arr[v] -= size; - mem_offset_arr[v] += size; if(mem_len_arr[v] == 0) v++; + else + mem_offset_arr[v] += size; /* Update file information */ dset_len_arr[u] -= size; - dset_offset_arr[u] += size; if(dset_len_arr[u] == 0) u++; + else + dset_offset_arr[u] += size; /* Increment number of bytes copied */ - total_size += size; + ret_value += (ssize_t)size; } /* end for */ /* Update current sequence vectors */ *dset_curr_seq = u; *mem_curr_seq = v; - /* Set return value */ - H5_ASSIGN_OVERFLOW(ret_value, total_size, size_t, ssize_t); - done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D_efl_writevv() */ |