Boost logo

Proto :

Subject: Re: [proto] Transform result_of nightmare and preserving terminal identity
From: Eric Niebler (eric_at_[hidden])
Date: 2012-10-31 15:59:52

10/31/2012 12:30 PM, Agustín K-ballo Bergé wrote:
> On 16/10/2012 03:50 p.m., Agustín K-ballo Bergé wrote:
>> On 16/10/2012 02:22 a.m., Eric Niebler wrote:
>>> Hi Agustín,
>>> This is just a quick note to let you know that I'm currently at the
>>> standard committee meeting in Portland, and that I'll be unable to look
>>> until this until I get back next week.
>> Thank you for letting me know.
> For future reference, my issue was resolved at StackOverflow. You can
> find it here

Heh, answered by me! Funny, I thought Bart's solution on this list had
answered your question, so I didn't come back to it.

> Preliminar tests for 100000000 evaluations of a simple expression `p = q
> + r * 3.f` where p, q and r are geometric vectors of 3 ints give the
> following promising times:
> Regular: 1.15s
> Proto: 1.2s
> Hand-Unrolled: 0.39s
> Proto-Unrolled: 0.8s
> Proto expressions build and optimization times are not taken into
> account. There is a considerable number of expression copies made by the
> expression optimization that cannot be avoided by the compiler.

Expression copies ... during expression evaluation? I wonder why that's

> I will
> continue my research by implementing a custom evaluation context that
> does this optimization 'on the fly', without actually modifying the
> expression.

Evaluation contexts are weaker than transforms. If it can't be done with
a transform, it can't be done with a context. I can't tell from the code
fragment what exactly you're doing with the transforms you've written,
or whether they can be improved.

Eric Niebler
BoostPro Computing

Proto list run by eric at