[Bug 14303] New: Listview: select all is incredibly slow.
http://bugs.winehq.org/show_bug.cgi?id=14303 Summary: Listview: select all is incredibly slow. Product: Wine Version: 1.1.0 Platform: All OS/Version: All Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 AssignedTo: wine-bugs(a)winehq.org ReportedBy: winehq.10.drkshadow(a)spamgourmet.com Created an attachment (id=14587) --> (http://bugs.winehq.org/attachment.cgi?id=14587) quickly select all items in a listview When you hit Ctrl-A in a listview control, the control loops through every single item in the list selecting them and setting focus on the item. With tens of thousands of items, this takes a _long_time_. I've created a patch that sets the range of selected items. This select all happens much more instantaneously. As an added bugfix, the selected item will not be changed when all items are selected. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Vitaliy Margolen <vitaliy(a)kievinfo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |trivial OS/Version|All |other Platform|All |Other -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #1 from Vitaliy Margolen <vitaliy(a)kievinfo.com> 2008-07-04 19:52:05 --- Pleas send all patches to wine-patches mailing list. After of course fixing formating. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 DrkShadow <winehq.10.drkshadow(a)spamgourmet.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #14587|0 |1 is obsolete| | --- Comment #2 from DrkShadow <winehq.10.drkshadow(a)spamgourmet.com> 2008-07-25 23:25:15 --- Created an attachment (id=15044) --> (http://bugs.winehq.org/attachment.cgi?id=15044) conditional corrections to previous patch The last patch had some if-statement errors; an update was sent to patches list but rejected. If anyone else wants a complete fix or to modify it to please others, the attached code works in my manual testing. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #3 from Nikolay Sivov <bunglehead(a)gmail.com> 2009-05-31 05:56:06 --- (In reply to comment #2)
Created an attachment (id=15044) --> (http://bugs.winehq.org/attachment.cgi?id=15044) [details]
Patch is obviously wrong: - LVN_ITEMCHANGING/LVN_ITEMCHANGED notifications ignored; - callback mask ignored. Going further such optimization with storing only range index isn't possible with current design cause it requires item state synchronization with ranges before sorting and after it - for 10000 items it won't be so fast. (In reply to comment #0)
I've created a patch that sets the range of selected items. This select all happens much more instantaneously.
This could be a result of omitted notifications. (In reply to comment #0)
With tens of thousands of items, this takes a _long_time_.
Maybe it's time to switch LVS_OWNERDATA style on. After that's a potential WONTFIX (or INVALID maybe) for me. I'd like to see any thoughts on that. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Igor Tarasov <tarasov.igor(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tarasov.igor(a)gmail.com --- Comment #4 from Igor Tarasov <tarasov.igor(a)gmail.com> 2009-07-21 05:03:03 --- (In reply to comment #3)
(In reply to comment #0)
With tens of thousands of items, this takes a _long_time_. Maybe it's time to switch LVS_OWNERDATA style on.
With LVS_OWNERDATA it takes forever to select all (or partially) list in ~200 thousands items. (In reply to comment #3)
After that's a potential WONTFIX (or INVALID maybe) for me.
Why? This operation is really way too slow. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #5 from Nikolay Sivov <bunglehead(a)gmail.com> 2009-07-21 06:02:47 --- (In reply to comment #4)
With LVS_OWNERDATA it takes forever to select all (or partially) list in ~200 thousands items.
What about notifications here? Is this broken or not? For me the possible reason for ownerdata slowdown is a lot of notification messages to be sent.
(In reply to comment #3)
After that's a potential WONTFIX (or INVALID maybe) for me.
Why? This operation is really way too slow.
If we're broken in notification code it's another bug. Patch author completely removed notifications, that's why this solution is invalid. If slowdown is in a huge amount of messages it can't be fixed in listview and is a general messaging performance issue. BTW, Igor, could you try to disable notifications in set_main_item() function: --- if (notify_listview(infoPtr, LVN_ITEMCHANGING, &nmlv)) --- if (infoPtr->bDoChangeNotify) notify_listview(infoPtr, LVN_ITEMCHANGED, &nmlv); --- and report if it improves anything? Another reason could be that I switched to store selection and focus flags in main item state (in main dpa) instead of resync it after and before sorting. This change improved sorting and made code more clear. I don't think another offset, dereferencing and assignment I've added to store it changed things a lot. I don't have enough time now, could you produce something like a benchmark (compilable on linux, as a crossbuild too)? Then we could profile it to find where we spend most of the time. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Nikolay Sivov <bunglehead(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |bunglehead(a)gmail.com Ever Confirmed|0 |1 --- Comment #6 from Nikolay Sivov <bunglehead(a)gmail.com> 2009-07-21 23:46:54 --- Apparently LVS_OWNERDATA performance could be improved. It sends only one notification on select all case. Test sent: http://www.winehq.org/pipermail/wine-patches/2009-July/076238.html So, 200 thousands it will reduce from 400000 messages to 1. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #7 from Igor Tarasov <tarasov.igor(a)gmail.com> 2009-07-24 11:25:01 --- Sorry for not responding quickly, I had to bring up testing environment. (In reply to comment #5)
(In reply to comment #4)
With LVS_OWNERDATA it takes forever to select all (or partially) list in ~200 thousands items. What about notifications here? Is this broken or not?
How can I be sure if that is broken or not, if I have never seen specs on these? I've looked through MSDN but have not found any notions regarding LVS_OWNERDATA.
Patch author completely removed notifications, that's why this solution is invalid.
But that does not make BUG invalid. The FIX is broken, not bug-report.
If slowdown is in a huge amount of messages it can't be fixed in listview and is a general messaging performance issue.
This can't be so. I've just checked that in windows with the same huge listview and it works immediately. It's like it was with bug #12701.
BTW, Igor, could you try to disable notifications in set_main_item() function:
It helped, but only a bit. It's still very slow. BTW, another issue found here: there is even more noticeable slowdown when you click some item after you have selected them all (that is when all items get unselected).
I don't have enough time now, could you produce something like a benchmark (compilable on linux, as a crossbuild too)? Then we could profile it to find where we spend most of the time.
I think that I do not understand well what I need to do. (In reply to comment #6)
Apparently LVS_OWNERDATA performance could be improved. It sends only one notification on select all case. Test sent: So, 200 thousands it will reduce from 400000 messages to 1.
Well, I see that your test case is for select all case only. But you should know that there is huge difference in performance not only in select all, but also in partial selects. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #8 from Nikolay Sivov <bunglehead(a)gmail.com> 2009-07-24 19:01:10 --- (In reply to comment #7)
How can I be sure if that is broken or not, if I have never seen specs on these? I've looked through MSDN but have not found any notions regarding LVS_OWNERDATA.
I've already done this with recently included tests. It seems not to be documented that ownerdata lists throw a single notification (for all items case).
If slowdown is in a huge amount of messages it can't be fixed in listview and is a general messaging performance issue.
This can't be so. I've just checked that in windows with the same huge listview and it works immediately. It's like it was with bug #12701.
BTW, Igor, could you try to disable notifications in set_main_item() function:
It helped, but only a bit. It's still very slow.
BTW, another issue found here: there is even more noticeable slowdown when you click some item after you have selected them all (that is when all items get unselected).
I see, will look at dropping selection code too, thanks.
I don't have enough time now, could you produce something like a benchmark (compilable on linux, as a crossbuild too)? Then we could profile it to find where we spend most of the time.
I think that I do not understand well what I need to do.
Nevermind. I was talking about some interactive test application to shows this issue.
Well, I see that your test case is for select all case only. But you should know that there is huge difference in performance not only in select all, but also in partial selects.
So, the reason is that we iterate when we could probably avoid it. I'll take a look at it. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #9 from Austin English <austinenglish(a)gmail.com> 2010-05-19 16:46:01 --- This is your friendly reminder that there has been no bug activity for 6 months. Is this still an issue in current (1.1.44 or newer) wine? -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #10 from Igor Tarasov <tarasov.igor(a)gmail.com> 2010-05-19 17:00:54 --- Still an issue. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #11 from Austin English <austinenglish(a)gmail.com> 2012-03-19 14:52:57 CDT --- This is your friendly reminder that there has been no bug activity for 650 days. Is this still an issue in current (1.4 or newer) wine? -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #12 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-19 15:52:30 CDT --- Yep, still an issue. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Nikolay Sivov <bunglehead(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #15044|0 |1 is obsolete| | --- Comment #13 from Nikolay Sivov <bunglehead(a)gmail.com> 2012-03-20 01:23:56 CDT --- Created attachment 39472 --> http://bugs.winehq.org/attachment.cgi?id=39472 patch Yeah, that's been a while and I kind of forgot about this problem. Please try this patch. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 Nikolay Sivov <bunglehead(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|patch | Severity|trivial |minor -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #14 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-20 13:42:34 CDT --- Umm... It does not allow to select all with ctrl+a. What I did to test it is selected first item, then scrolled down to the end and selected the last one. Deselection is also slow. These operation still is very slow, while with native comctl it works instantly. Can't test "select all" variant, sorry. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #15 from Nikolay Sivov <bunglehead(a)gmail.com> 2012-03-20 13:46:24 CDT --- How do you test it? Could you attach or link to your test application? -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #16 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-20 14:12:58 CDT --- No, I can't. It is non redistributable. There is such window: http://www.polosatus.ru/wine/listview.png Just a LVS_OWNERDATA listview with list of all words indexed in db. Somewhere around 200k items. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #17 from Nikolay Sivov <bunglehead(a)gmail.com> 2012-03-20 14:20:54 CDT --- Ok, did you mean that select all function is broken for you with this patch and works without it (slow or not doesn't matter)? -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #18 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-20 14:36:07 CDT --- I just say, that I can't test "Select all" as single command, which is being executed on ctrl+a shortcut, for instance. But, I can select all of items manually. And this feature is very slow with builtin comctl32. I mean that entire LVS_OWNERDATA behavior is not optimised (and supposedly bogus). Some parts of it were already fixed (see bug 12701, it deals with search and listview destruction), some of them are still here. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #19 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-20 14:37:13 CDT --- And your patch did not help, manual selection of big portions of items is very slow. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #20 from Nikolay Sivov <bunglehead(a)gmail.com> 2012-03-20 14:43:52 CDT --- (In reply to comment #18)
I just say, that I can't test "Select all" as single command, which is being executed on ctrl+a shortcut, for instance. But, I can select all of items manually. And this feature is very slow with builtin comctl32.
The question was does attached patch break select all function for you or not? Forget about performance for a moment. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #21 from Igor Tarasov <tarasov.igor(a)gmail.com> 2012-03-21 03:25:09 CDT --- No. That dialog does not support "select all". That is, nothing happens when you hit ctrl+a. On both native and builtin versions of comctl32. So, I don't know if this patch changed something. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #22 from Austin English <austinenglish(a)gmail.com> --- This is your friendly reminder that there has been no bug activity for 2 years. Is this still an issue in current (1.7.16 or newer) wine? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #23 from Nikolay Sivov <bunglehead(a)gmail.com> --- Yes, I should be still a problem. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=14303 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=14303 joaopa <jeremielapuree(a)yahoo.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree(a)yahoo.fr --- Comment #24 from joaopa <jeremielapuree(a)yahoo.fr> --- Does the bug still occur with current wine (3.21)? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=14303 --- Comment #25 from joaopa <jeremielapuree(a)yahoo.fr> --- Does the bug still occur with wine-4.19? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (2)
-
wine-bugs@winehq.org -
WineHQ Bugzilla