[Development] QVariant comparison in Qt6
Thiago Macieira
thiago.macieira at intel.com
Tue Sep 22 16:17:49 CEST 2020
On Tuesday, 22 September 2020 06:55:35 PDT Lars Knoll wrote:
> > For internal APIs, please return just a plain int.
>
> Those compare() methods are meant to be public.
The public API does not have to be non-inline library call.
> Really? Are we now making API decisions on how well a compiler manages to
> micro-optimize this? We have been using int as a return value for
> QString::compare(). qsizetype feels unnatural in this context, so I don’t
> want to use it.
Yes. If someone tries to use this new comparison for sorting a QMap, for
example, there could be a lot of calls. A simple, micro-optimisation by
choosing the size and layout of the parameters might improve performance quite
a bit.
And especially if there's no impact to how the user uses the API.
> 1)
> std::optional<int> compare();
>
> 2)
> enum class Ordering { Less = -1, Equal = 0, Greater = 1, Unordered = 0xff
> };
> Ordering compare();
>
> 3)
> Implement a Qt replacement for std::partial_ordering (could use the std
> stuff if C++ 20 is available) and use that.
I'd rather stay simple and allow extending for <compare> where more details
are necessary.
For that, I think #1.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel DPG Cloud Engineering
More information about the Development
mailing list