Please consider these patches for the ros typekit generation. They speed up
compilation times of typekits, reduce their codesize by about 40% and will
cause components using these typekits compile much faster.
This was done by generating 'extern template' statements and compiling with
default visibility=hidden. The latter reduces the nbr of functions generated
and listed in the final .so
A new header for each ros typekit/message types package is generated
(<packagename/Types.hp
) which a component may include when it is using one
of these messages. This should improve compile times drastically, at the
expense of linking against that typekit. Since this is not yet automatically
done in 2.2, it is _not_ advised to include that header yet. In 2.3, linking
will be automatically done by the UseOrocos macros.
The same header already existed for orogen/typegen projects.
On a related front, I've been investigating the cost of operations on code
size/compilation times. Compiling components with visibility=hidden will
certainly help as well, but this would require for each component package
import/export preprocessor macros. So we'd better investigate this after 2.3
is released. 'Unfortunately', boost::fusion as we use it does not have such a
big impact (only 3%), so there is something else going on. It might still be a
'scalability' problem within the compiler (ie non-linear increase of
compilation time when nbr of types increases linearly).
Peter