On 26/04/12 18:02, Eric Niebler wrote:

Interesting. I avoided this design because I was uncertain whether the
compiler would be able to optimize out all the copies of the
intermediate nodes. You're saying NT2 does it this way and doesn't
suffer performance problems? And you've hand-checked the generated code
and found it to be optimal? That would certainly change things.

NT2 treats large amounts of data per expression, so construction time is not very important. It's the time to evaluate the tree in a given position that matters (which only really depends on proto::value and proto::child_c<N>, which are always inlined now).

We also have another domain that does register-level computation, where construction overhead could be a problem. The last tests we did with this was a while ago and was with the default Proto behaviour. That particular domain didn't get sufficient testing to give real conclusions about the Proto overhead.
proto mailing list

Reply via email to