Actually, sorting would be a mild exception to that. Sort the download list by e.g. name and you should see n log n (at worst) scaling behavior, which is worse than linear but not, admittedly, by much. But the behavior Limewire exhibits here looks like it must be quadratic, or worse, or it wouldn't be notices. There's no excuse for quadratic scaling in this sort of application, and there's also no excuse for the user interface freezing or for it to hog the CPU even to the point of pre-empting higher priority tasks. I've seen it lock up a Windows machine myself -- even Task Manager wouldn't respond, and it had High priority and Limewire had Below Normal due to its having kept things like web surfing from being painless at Normal. When the system recovered, the Task Manager popped up and showed Limewire coming down from 100% cpu use, so there's little doubt as to who the culprit was.
The user interface event handling thread should not block waiting for anything, period. A task should never pre-empt anything with a higher priority, period. Quadratic or worse scaling behavior in this type of app is unacceptable, period. Something is very wrong here. |