COW strings in libstdc++

Christopher Jefferson chris@bubblescope.net
Mon Aug 31 21:26:00 GMT 2009


On 31 Aug 2009, at 18:44, Brendan Miller wrote:

> It looks like the current implementation of string in libstdc++ is
> copy on write correct? Is this also true of gcc 3.4? Is this behavior
> guaranteed for the future, or will C++0x somehow require a change
> here?
>
> Generally I'm wondering whether it will remain efficient to do things
> like stick strings by value in vectors to be sorted. Right now as I
> see it, there's no real point in wrapping the string in a shared_ptr,
> since it already uses reference counting internally.

With some care, rvalue references will get back all the speed, and  
more, of COW in many situations. running std::sort on a vector of  
strings will be faster in C++0x with non-COW strings than C++03 with  
COW strings. Of course sometimes you actually want to copy of a  
string, and that will be slower.

Chris




More information about the Libstdc++ mailing list