[Development] Views
Joerg Bornemann
Joerg.Bornemann at qt.io
Wed Jun 12 13:26:56 CEST 2019
On 6/12/19 10:28 AM, Mutz, Marc via Development wrote:
> On 2019-06-12 09:20, Ulf Hermann wrote:
>>> I don't think that (non-)COW is a problem in the scenario under
>>> discussion.
>>
>> Having the thing COW makes the porting simpler at the cost of suboptimal
>> performance. If we wrote a COW container as a drop-in replacement for
>> QMap or QHash with equivalent behavior we could just s/QMap/QFlatMap/g
>> in Qt code and the issue would largely be solved.
>
> As I said earlier: there's no alternative to thinking. There's no one
> container that fits all use-cases. QFlatMap isn't it, either. It has
> linear insertion behaviour, and it invalidates iterators on remove. You
> need to analyse each use of QMap before replacing it with a QFlatMap (or
> an unsorted vector, or a C array with the key as an index, or...).
>
> Get the idea out of your collective heads that we just need QFlatMap and
> everything will be solved. For some code, yes. Just like QMap is the
> correct container for some code already. But s/QMap/QFlatMap/ is just as
> wrong as using QMap just because you need an associative container was
> in the first place.
I have to agree with Marc here. *Every* replacement must be checked
manually whether the simple s/QMap/QFlatMap/ suffices or a more involved
change is necessary.
I believe many cases would be easily portable, but there will still be
spots left where a raw sorted vector is the right approach - or another
abstraction.
Joerg
More information about the Development
mailing list