Boost logo

Boost :

Subject: Re: [boost] [xint] Third release is ready, requesting preliminary review
From: Stewart, Robert (Robert.Stewart_at_[hidden])
Date: 2010-05-03 12:46:38

Chad Nelson wrote:
> On 05/03/2010 08:28 AM, Stewart, Robert wrote:
> >> But, you save the cost of copying a large object. COW has many
> >> disadvantages, but how can you claim it is slower when you require
> >> a copy?
> >
> > Did you miss the "but then need to modify it/them" part? The only
> > reason for the copy was to have a mutable copy. Thus, the COW
> > overhead was useless in that example.
> Not exactly useless -- I *do* know enough to avoid things that are
> completely useless. :-) The purpose was to initialize them to
> the value
> of another integer, such as a parameter, before going into a loop that
> modifies them based on their current values. With copy-on-write, the
> initial allocation can be skipped, which (depending on the number of
> times it needs to loop) can be a significant savings.

You say you copy an instance and then mutate it. Guess what! The copy involves manipulating the reference count and the mutating operations must all check whether the instance is unique. The first mutating operation actually makes a unique copy and the rest just check superfluously. Thus, in the cited example, since there will be a mutated copy, COW pessimizes the code. In single threaded code, the overhead is small, assuming good branch prediction in the processor, but it isn't zero. (When used in MT code, of course, the overhead is worse.)

My point is your example in no way justifies COW. Provide another real use case from your library that isn't served by move semantics, and you'll have convinced folks that COW is appropriate.

Rob Stewart robert.stewart_at_[hidden]
Software Engineer, Core Software using std::disclaimer;
Susquehanna International Group, LLP

IMPORTANT: The information contained in this email and/or its attachments is confidential. If you are not the intended recipient, please notify the sender immediately by reply and immediately delete this message and all its attachments. Any review, use, reproduction, disclosure or dissemination of this message or any attachment by an unintended recipient is strictly prohibited. Neither this message nor any attachment is intended as or should be construed as an offer, solicitation or recommendation to buy or sell any security or other financial instrument. Neither the sender, his or her employer nor any of their respective affiliates makes any warranties as to the completeness or accuracy of any of the information contained herein or that this message or any of its attachments is free of viruses.

Boost list run by bdawes at, gregod at, cpdaniel at, john at