C++11 classes

Marc Glisse marc.glisse at inria.fr
Wed Nov 16 13:11:30 CET 2011


On Wed, 16 Nov 2011, Hans Aberg wrote:

> On 16 Nov 2011, at 12:23, Marc Glisse wrote:
>
>>> I drafted some C++11 classes integer etc., using move constructors and assignment operators,
>>
>> Something like that is likely to eventually get standardized in C++, but it may be a while yet.
>
> It is in the new standard as of August.
>  https://en.wikipedia.org/wiki/C++11

I am talking about an integer class...

>> Note that without lazy initialization, gmp doesn't benefit from moves as much as it could.
>
> I'm not sure what you have in mind here.

The move constructor still needs to call mp*_init, because it has to leave 
the moved-from object in a usable state, so there is still an allocation.

>>> and then testing with a conversion of the pi program. In the most optimized version, the overhead is less than 10% relative C or C compile as C++,
>>
>> I believe you can get 0 overhead with gmpxx.
>
> Possibly. The idea here, is to accept some overhead for a considerably simpler syntax. For example, write

Simpler that C, but more complicated than the natural one:
g1=g1*(6*b-1)*(6*b-5)
which, with gmpxx from the repository, is equivalent to 
g1*=6*b-1; g1*=6*b-5;

An important goal is that people should be able to write the operations as 
if they were working with int or double and not have to think about how 
the implementation will optimize it.

> Further copying/moving can be done by using a reference count.

That's a different approach. If you use reference counting, move 
operations will bring you less.

-- 
Marc Glisse


More information about the gmp-discuss mailing list