$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Looking for some "real world" extended precision integer arithmetic tests
From: John Maddock (boost.regex_at_[hidden])
Date: 2012-01-26 05:20:25
>> I was thinking of those approaches. It makes sense to change my code
>>appropriately as it will also enable usage of mpz_class as you noticed
>>above. As a separate benchmark it would be good to have
>>time comparison of fixed_int code working with and without expression
>>template type.
>
> I'm a little confused why we need expression templates for fixed int.
> Does the fixed int dynamically allocate? If not, what do
>the expression templates accomplish? For stack allocation of fixed int
>values I wouldn't expect reuse of memory
>to be much of a performance win. Can you clarify for me, John?
Good question.
The short answer is the expression templates are there because they're part
of the overall frontend framework (aside: it might be worthwhile providing a
simpler non-expression-template frontend for debugging purposes, but that's
another issue).
Whether they're of any benefit in this case (and no it doesn't dynamically
allocate) is open to question. Except that:
* Reducing temporaries should reduce the amount of array copying going on,
and
* The expression template do *sometimes* reduce the number of arithmetic ops
taking place - by applying the rules of arithmetic they can sometime
simplify the expressions, a banal example would be something like:
a = a+b+c;
which gets transformed to:
a+= b;
a+=c;
Probably doesn't make much difference, and I'm sure there are counter
examples where it hurts, but it'll be interesting to see how things shake
out in practice...
John.