On 20.05.19 17:27, Konstantin Tokarev wrote:
20.05.2019, 18:21, "Thiago Macieira" <[email protected]>:
On Monday, 20 May 2019 06:56:56 PDT Lars Knoll wrote:
I actually think we should consider getting rid of shared_null and instead
have d == nullptr as the null/default constructed state of the object. Yes,
that means we need to check for d == nullptr in member functions, but I
don’t think the overhead is a problem, as d will have to be loaded into a
register in any case.
It does introduce a compare-and-branch that wouldn't otherwise be there, but
the cost is minimal compared to what most API would be doing, indeed.
We should wrap d == nullptr in Q_UNLIKELY() to make branch predictor assume
non-null path by default.
I would not do that. Q_UNLIKELY does very little to the branch predictor, it
only tell the compiler to put that part of the branch in a cold area (and also
optimize for size instead of for speed)
Might not be a good idea considering that default constructed object is
actually quite likely.
_______________________________________________
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development