[Development] Views
Mutz, Marc
marc at kdab.com
Thu Jun 6 14:49:56 CEST 2019
On 2019-06-06 14:04, Lars Knoll wrote:
>> On 6 Jun 2019, at 13:39, Mutz, Marc via Development
>> <development at qt-project.org> wrote:
[...]
>> You are equating Qt users and Qt implementers. You can maintain the Qt
>> API, but use more efficient data structures in the implementation. You
>> seem to be implying that these two things cannot be separated.
>
> The comment above was aimed at our APIs and towards our users, not
> about how we implement things internally.
Ok, clash of context. This subthread was about the exact change in
QtWayland, though, and that's internal implementation.
>> None of the changes where I replaced QMap changes the public API at
>> all (except adding an overload because we can). No user is affected by
>> this in any way, except that they have a few pages of memory more free
>> than before.
>>
>> Please explain to me how any of those changes makes _users_ of Qt have
>> to revert to the STL?
>>
>> And please explain to me how it can possibly be worthwhile to generate
>> 8KiB of code _just_ to not have to use lower_bound? Which argument
>> could *possibly* be made against a lower_bound? Esp. seeing as many
>> attempts to write one by hand have failed. I remember a bug about
>> shortcuts being mapped to the wrong key, because the hand-rolled
>> binary search was unstable.
>
> You have in general been advocating lately to remove/deprecate lots of
> Qt API in favour of STL. This is what I referred to, not
> implementation details in our code.
Ok, noted.
> Removing the usage of a QMap for a mapping of 5 values is the right
> thing to do. Whether we need lower_bound() for that and a sorted list,
> or simply an unsorted vector where we iterate until we find the right
> value doesn’t matter too much in this case. Performance wise both
> would probably be equivalent :)
>>
>> I'm sorry, but we have a lot of code that is less readable than any of
>> the changes I uploaded. It just cannot be an argument to say that it's
>> unreadable because it uses an STL algorithm. This sentiment has caused
>> so very, very many quadratic loops because people get the impression
>> that std::remove_if is toxic, and in each one the solution was to use
>> remove_if, because the hand-rolled alternative would be totally
>> unreadable.
>
> Nobody here said that. I also believe those changes that you proposed
> got approved to the largest degree.
This is not the impression I get from
https://codereview.qt-project.org/c/qt/qtwayland/+/264069, or
https://codereview.qt-project.org/c/qt/qtbase/+/264129 vs.
https://codereview.qt-project.org/c/qt/qtbase/+/264161
> If you read what I said earlier, I also said that in most cases better
> data structures and algorithms will lead to more readable code. I am
> not opposed to using those in Qt, quite the opposite.
Good.
>> I'm sad to see that Qt devs think so lowly of themselves as to be
>> unable to understand a piece of code that uses an STL algorithm.
>> Really. I'm out of words.
>
> Nobody ever said that as far as I can tell. What people said is that
> there are cases, where a loop is just as efficient and easier to read
> (e.g. when searching for an entry). And in that case it’s fine to
> simply use that. So please stop turning the meaning of what people
> said around like that.
I was a poignant remark, yes, but that's _exactly_ the feedback I get
from the reviews I quoted above: Dropping QMap is acceptable when the
API is unchanged (as with the array replacing the map), but totally not
acceptable (b/c/o unreadable) if it contains lower_bound or find_if. To
the point that the 'better' choice is to replace QMap with QHash -
because they have the same API. I'd ROTFL if I wasn't crying.
Thanks,
Marc
More information about the Development
mailing list