|
Boost : |
Subject: Re: [boost] [utility] new auto_buffer class --- RFC
From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2009-03-06 10:17:15
Stewart, Robert skrev:
> Scott McMurray wrote:
> On Thursday, March 05, 2009 10:24 PM
>> really don't, for example, see why the self-assignment check is worth
>> omitting.
>
> The conditional leads to predictive execution by modern CPUs. If the predicted outcome of the conditional differs from reality, the pipeline stalls. Thus, the canonical copy assignment operator uses copy-and-swap. That reuses the cctor logic and the (expected) efficiency of swap() to make copying safe and efficient without the need for a self-assignment check.
>
> In those rare situations in which self-assignment actually occurs, profiling might reveal the extra copying and swapping and expose the need to redesign the calling code. For the normal use case, the non-checking copy assignment operator will be as efficient as possible.
Unfortunately, the caninical operator=(T) that swaps is not efficient
for this container.
-Thorsten
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk