On Thursday, February 24, 2011 12:10:17 PM Eric Niebler wrote:
> On 2/24/2011 10:26 AM, Hartmut Kaiser wrote:
> > Thomas and I found a nice and simple way to do the preprocessing to
> > Phoenix V3 which required a coupe of hours of hacking for it to be
> > added. The effect was significant (see attached figure). Therefore, I
> > can only encourage to add partial preprocessing to Fusion and Proto!
>
> I'm not sure I understand this graph, Hartmut. It's entitled, "Time to
> Preprocess Phoenix", and it plots "No PP" against "Using PP". What
> does "no pp" and "using pp" signify here?
No PP means no pre pre processing has been done (aka a regular compilation).
Using PP means that all the code has been preprocessed prior to the actual compilation.
> Also, making the PP phase faster is only interesting if it is a
> significant portion of the overall compilation time.
The time for preprocessing the fusion/proto/phoenix headers stays constant (if you don't increase the PP limit macros), it is about 2 seconds on my machine. The time spent in the PP phase becomes less signifcant when the actual expressions get more and more complicated, i.e. if we deal with TUs that already take half a minute to compile.
However, I believe it is one (little) step in the direction of bringing compile times down.
In Phoenix V3 Hartmut contributed PP code that lets us partially preprocess the headers with Boost.Wave, which I think would be a great idea if we could generalize it and deploy that technique in all PP heavy libs.
> I'd be more interested in plotting overall time, not just PP time.
>
> Thanks for doing this! I hope to steal your work for Proto.