[Interest] QExplictlySharedDataPointer vs QSharedPointer

Konstantin Shegunov kshegunov at gmail.com
Thu Sep 8 23:48:44 CEST 2016


On Thu, Sep 8, 2016 at 11:21 PM, Elvis Stansvik <elvstone at gmail.com> wrote:

> (I think you forgot to include the list in your reply)


Yes, I'm sorry about that.


> I know that it's mentioned in the docs what you bring up (and that
> Thiago also brought up), that a QSP manages a *pointer*, while QESDP
> manages *data*. But I still can't say that I'm 100% sure why I can't
> do with QSP what I can do with QESDP...
>

You can, and if you find it easier you probably should. From what I've seen
QESDP is used rather rarely.


> In this use case, I can't quite see why I couldn't use a QSP instead
>

Again, you can.


> So is the difference really just the slightly different API and
> slightly different way of doing a deep copy? (I consider the
> external/internal refcount mostly a technical difference).
>

I admit you got me curious, so I looked up the source. It seems QESDP is a
bit more efficient (no external structure and custom (de)allocator) because
of the internal reference counting. It does, however, detach exactly as
you'd do manually[1]. I'd expect it'd perform marginally better for small
objects compared to QSP, whereas for big fat data structures I'd expect no
gain whatsoever. In any case as always I think one's best bet is using what
*feels* most natural to the case on hand, however esoteric this might
sound. :)

Kind regards,
Konstantin.

[1]:
http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/tools/qshareddata.h#n229
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160909/549e5fef/attachment.html>


More information about the Interest mailing list