Skip to content
Snippets Groups Projects
Commit 5161efae authored by Andreas Schenk's avatar Andreas Schenk
Browse files

refactored ValueHolder, ImageStateImpl and FFT

Changed in detail:
------------------

- removed DEPRECATED and unused code (slice and row pointers) in value holder
- switched from new allocatd array to std::vector
- removed explicit data initialization loop
- using size_t instead of unsigned int for memory allocation
- removed padding code
- removed try catch(...) statements
- added overflow check for big volumes
- optimized 3D index to linear index calculation
- removed physical extent for spatial domain (identical to logical extend not that padding is gone)
- switched FFT to out of place transforms

Benefits
--------

- memory for large images is correctly allocated
- if the memory can't be allocated an exception is thrown instead of crashing the program
- speed increase for FFT ca. 12% and for algorithms using direct value access (e.g. Stat) ca. 7%

Issues
-----

- FFTs are not out of place, leading to increased memory usage for c2c DFT backtransform and
  hc2r FFT/DFT backtransform (3x image size instead of 2x image size). If necessary it would
  be possible to add a fallback for these cases (i.e. catch bad_alloc for the tmp state) and
  do them in place in low memory conditions. Padding for the in-place transform could be added
  to the std::vector either at construction time or otherwise using reserve().
parent cd6ead1a
Branches
Tags
No related merge requests found
Showing
with 181 additions and 500 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment