Op 20/07/2016 om 11:39 schreef Edward Welbourne:
Op 20/07/2016 om 10:41 schreef Olivier Goffart:
The distribution does not matter. If it can be big, quadradic
complexity can be a blocker.
André Somers replied
Nonsense. There is no need to pessimize the frequent cases to cater
for avoiding a performance issue in an exceptional case.
Well, it depends ...
You've got some function, F, from number of connections to cost of any
given way of handling connections. You've got some distribution P over
values n takes. Your total cost is the sum of P(n).F(n) over that range
of values. The big-O discussion is usually about how F varies; but what
actually matters is the sum of P(n).F(n). [...]
Yes, you are right of course.
But then again, it is easier to optimize the rare-but-expensive case in
the application code than doing something about a frequent action that
is slower than it could be. To stick to the concrete issue here:
disconnecting a long list of connections using a loop is not very
efficient if you do that one-by-one, Olivier pointed out you turn a O(N)
into an O(N^2) if you then also do the clean-up. So you optize that to
make sure that you can disconnect *all* connections for a given signal
or slot instead, even if that means using an intermediary object or
signal. If analysis shows that this case is slow, you spend a bit of
time to optimize _that_ case. You cannot do the same for the many
individual cases where there is maximum a handful of connections to any
given signal or slot.
But: this reasoning is as much dependent on actual data on what the
distribution of n is as the orignal statement that it does make sense.
Hence my question on the availability of such data...
André
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development