diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-09-23 20:43:22 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-09-23 20:43:22 (GMT) |
commit | 82c6eab1814e1e06ef9472f6f4bbc8522064e0bc (patch) | |
tree | 8b2cd87ac76865c95e4f58ed4f45766a12d8d738 /src/H5Dchunk.c | |
parent | 6ff8aac3a760ea8b69b5fad866b1d06cc41c6b14 (diff) | |
download | hdf5-82c6eab1814e1e06ef9472f6f4bbc8522064e0bc.zip hdf5-82c6eab1814e1e06ef9472f6f4bbc8522064e0bc.tar.gz hdf5-82c6eab1814e1e06ef9472f6f4bbc8522064e0bc.tar.bz2 |
[svn-r19476] Description:
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
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, w/threadsafe, in production mode
Linux/PPC 2.6 (heiwa) w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in debug mode
Mac OS X/32 10.6.4 (amazon) in debug mode
Mac OS X/32 10.6.4 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
Mac OS X/32 10.6.4 (amazon) w/parallel, in debug mode
Diffstat (limited to 'src/H5Dchunk.c')
-rw-r--r-- | src/H5Dchunk.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/H5Dchunk.c b/src/H5Dchunk.c index 03dd102..1511515 100644 --- a/src/H5Dchunk.c +++ b/src/H5Dchunk.c @@ -4955,9 +4955,8 @@ H5D_nonexistent_readvv(const H5D_io_info_t *io_info, H5D_t *dset = io_info->dset; /* Local pointer to the dataset info */ H5D_fill_buf_info_t fb_info; /* Dataset's fill buffer info */ hbool_t fb_info_init = FALSE; /* Whether the fill value buffer has been initialized */ - ssize_t bytes_processed = 0; /* Eventual return value */ size_t u, v; /* Local index variables */ - ssize_t ret_value; /* Return value */ + ssize_t ret_value = 0; /* Return value */ FUNC_ENTER_NOAPI_NOINIT(H5D_nonexistent_readvv) @@ -4999,27 +4998,26 @@ H5D_nonexistent_readvv(const H5D_io_info_t *io_info, /* Update source information */ chunk_len_arr[v] -= size; - chunk_offset_arr[v] += size; if(chunk_len_arr[v] == 0) v++; + else + chunk_offset_arr[v] += size; /* Update destination information */ mem_len_arr[u] -= size; - mem_offset_arr[u] += size; if(mem_len_arr[u] == 0) u++; + else + mem_offset_arr[u] += size; /* Increment number of bytes copied */ - bytes_processed += (ssize_t)size; + ret_value += (ssize_t)size; } /* end for */ /* Update current sequence vectors */ *mem_curr_seq = u; *chunk_curr_seq = v; - /* Set return value */ - ret_value = bytes_processed; - done: /* Release the fill buffer info, if it's been initialized */ if(fb_info_init && H5D_fill_term(&fb_info) < 0) |