Improve build time of OTBApplicationEngine
Optimize build time of the
A conversion of
TOutputImage via a
otb::ClampImageFilter is needed in order to allow in-memory chaining of OTB-Applications such as for
otb::Wrapper::CompositeApplication derived classes. This involves n² complexity template-instantiations (
This complexity could be reduced to 2.n² by using a
otb::VectorImage< double, 2 > as pivot, since the
otb::ClampImageFilter<> already uses an in-place conversion to an internal
std::vector< double > pixel-type.
This is part of story #1649.
otb::Wrapper::CastImage< TOutputImage, TInputImage > has been developed in order to factorize code between
otb::Wrapper::OutputImageParameter and linearize the n² complexity into an 2.n complexity of template instantiations, thus reducing build time. This private helper class also uses Template Meta-Programming in order to optimize the conversion pipeline in specific cases such as:
Moreover, since the image-type set is finite and based on
extern template statements have been added for all image-type to factorize code generation between all OTB-Application modules into the
Also, some macros have been used in order to simplify code maintenance of dynamic type switching.
otb::Wrapper::Application class exposes template accessors such as
::SetParameterOutputImage<>() which could be moved into private scopre since accessors for each
GDALDataType-based image-types are provided. The latter are implemented using the former. This would also allow to move the
otb::Wrapper::InputImageParameter::GetImage<>() function into
OTBApplicationEngine module private scope, lightening module library weight (by not exporting lors of template instantiations).
The complex image-type versions of the conversion also uses a n² complexity of template instantiations and, since they are obsolete, they should be removed, which is done by !442 (merged).
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍votes from core developers, no 👎vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement