On 2019-05-24 09:35, Lars Knoll wrote:
On 23 May 2019, at 13:26, Mutz, Marc via Development <development@qt-project.org> wrote:
[...]
You said that QList should vanish from Qt API. So we don't care. We'll have that switch to make QList _be_ QVector for ese of porting, but as a template alias. There's your zero-copy conversion :) That leaves users. And I repeat: I'd leave QList alone (as QArrayList, possibly with always IndirectLayout), and just have implicit deprecated conversions between QArrayList and QVector. You shouldn't care about performance of unported code: It's easy to target both Qt 5 and Qt 6 if you use auto for receiving from Qt API. For sending to Qt API, it's a bit more tricky. You need to ifdef or live with the implicit conversion in a Qt 6 build, but it's not something that we should optimize for. Really. Don’t.

Sorry, but no. Larger performance regressions that are not really
visible/cought at compile time can be as large a headache to our users
as the non stable references to data in the container.

Sorry, you're comparing apples and oranges, iow: a performance issue with a correctness issue. You cannot weigh them against each other. We need to ensure that user code stays correct _first_, fast _second_. The first rule of optimisation: Don't do it. The second rule: Don't do it _yet_. Write correct code first, optimize later. You can't turn that around. It'd send a catastrophic signal to Qt users.

Here's how I see it: performance problems show up in testing, and are easily identified by a profiler, a tool that is available on every platform and everyone knows how to use it. Stability of references problems are found, if at all, by memory sanitizers, something that much less people will be familiar with, and, crucially, might hide in less-well tested code.

I’d argue that it might cause the larger amount of problems as keeping
references to data in the container is something that’s not used very
often. But *everybody* will have tons of conversions between QList and
QVector with your plan for unported code. IMO that’s just as bad.

I disagree. See above. I'd like to add, if I may be so bold, that seeing just how widespread unintended detaches are _even in Qt code_, are you _actually_ going to tell me that copying a QVector into a QList is going to be _noticeable_? It has O(detach) complexity. Yes, in the 5% of code, it might get slower (if there wasn't an unintended detach to begin with), but as I said: it's easily identified with the simplest of tools: a profiler, and in normal testing. The correctness issue may be hiding in the 95% that is less well maintained.

Please tell me that I misunderstood you and that you are _not_ going to prefer to optimize for speed of _unported_ code, sacrificing correctness of the same?

Please?

Thanks,
Marc

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to