From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2006-01-09 09:46:46
"Andy Little" <andy_at_[hidden]> wrote
> I shall have to make use of Boost.Typeof optional in the next version of
> too in order to allow user to decide whether they want to use it and also
> monitor the effect on compilation times.
The compilation overhead imposed by Boost.Typeof comes in two flavours:
1) Time necessary to deduce type, when requested. A few things were done in
the past to reduce it, including using our own compile time vector instead
of mpl::vector (gave about 2.5 times increase in performance; this is very
typeof-specific, though, and is related to element access by index, where
index is known at preprocessing time). However, we'll never be able to
completely eliminate this overhead, and it is especialy noticable for
complicated types -- too many templates get instantiated;
2) Time necessary to just include the typeof stuff. This is currently spent
mainly on generating definitions of our vector. This is especially painful
when LIMIT_SIZE is set to a larger number, to allow for deducing of more
complicated types. I think, once I commit the code recently provided by
Tobias (and this should happen very soon, probably this evening), this
problem will be mostly remedied.
So, when you estimate the effect of the Boost.Typeof on the compilation
time, please distinguish between per-file, one time overhead, and per-type
overhead. This is important in order to decide how to address the issue.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk