On 5/15/2011 9:19 PM, Thomas Heller wrote:
> Hi,
> 
> Today I experimented a little bit with phoenix and proto.
> My goal was to decrease the compile time of phoenix. When I started the 
> development of phoenix, Eric advised me to use proto::basic_expr to reduce 
> compile times.
> Which makes sense giving the argumentation that on instatiating the 
> expression 
> node, basic_expr has a lot less functions etc. thus the compiler needs to 
> instantiate less. So much for the theory.
> In practice this, sadly is not the case. Today I made sure that phoenix uses 
> basic_expr exclusively (did not commit the changes).
> 
> The result of this adventure was that compile times stayed the same. I was a 
> little bit disappointed by this result.
> 
> Does anybody have an explanation for this?

Impossible to say with certainty. I suspect, though, that your use case
is different than mine or, say, Christophe's. With xpressive or MSM,
compiles weren't effected by pre-preprocessing, which shows that we're
hitting limits in the speed of semantic analysis and code gen (possibly
template instantiation). Pre-preprocessing sped up Phoenix, which shows
that you're more hamstrung by lexing. The choice of either proto::expr
or proto::basic_expr doesn't matter for lexing because they're both
going to be lexed regardless.

I know when I introduced basic_expr, I ran tests that showed it was a
perf win for xpressive. But it was a small win, on the order of about
5%, IIRC. YMMV.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com
_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to