Community
Participate
Working Groups
I20040512 - 0800 Steps: 1) Launch a runtime workbench from a self hosting workspace in debug mode 2) After the workbench has started, suspend all threads 3) Expand the main thread, and select it in the Debug view 4) Hold down "Down arrow" to scroll down the stack frames. This is extremely slow. When profiling, I noticed a third of the time is taken by WorkenchActivitySupport.setEnabledIds (see attached profiler output). In actual fact, the set of enabled activities *never* changes in this scenario. Each call to MutableActivityManager.setEnabledActivityIds is providing the exact same set of activities. It actually detects this case, but then proceeds to call updateIdentifiers, which does some expensive pattern matching computations (725,000 invocations of Pattern$Dot.match, for example).
Created attachment 10564 [details] Profiler output
This is the same performance problem we are seeing in bug 61829
Oi. That's terrible.
Fix in HEAD. Identifiers are only updated in the event that the enabled set has changed.
Kim can you indicate which plugins from HEAD I would need to check if this fixes bug 61829...or if you can indicate that it is a dup? Thanks either way :-)
I don't believe this is a dupe, although it MIGHT be. The bug you referenced shows a context/command problem, not necessarily an activity problem. The systems have some interaction but I'm not sure this would be a problem for you. You can check out org.eclipse.ui.workbench to test against...
I've just taken a quick look myself and it's still rather slow but I don't have a frame of reference to judge against... I had never tried it before this fix.
Previously this accounted for about 35% of stepping time. I will try again with tonight's nightly build and get some new profiler output. There are still a number of other things happening while stepping that are causing slowness (see bug b1992)
Verified in 200405190010
Closing to keep a tidy house. Pardon the spam.