Bug 94489 - [About] Configuration Details is slow and creates a lot of garbage
Summary: [About] Configuration Details is slow and creates a lot of garbage
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Update (deprecated - use Eclipse>Equinox>p2) (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.1 RC1   Edit
Assignee: Branko Tripkovic CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2005-05-10 15:41 EDT by Nick Edgar CLA
Modified: 2005-05-27 10:43 EDT (History)
2 users (show)

See Also:


Attachments
Profile of first invocation of "Configuration Details" dialog from target workspace (180.46 KB, text/html)
2005-05-17 14:57 EDT, Nick Edgar CLA
no flags Details
ConfigurationLogUpdateSection change (4.42 KB, patch)
2005-05-25 15:38 EDT, Branko Tripkovic CLA
no flags Details | Diff
properly NLSed strings (11.68 KB, patch)
2005-05-25 18:57 EDT, Branko Tripkovic CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Edgar CLA 2005-05-10 15:41:06 EDT
build I20050509

The heap status indicator shows the, in my development workbench, Help > About >
Configuration Details generates 40M of garbage the first time it's used, 33M
each time after that.
Comment 1 Nick Edgar CLA 2005-05-11 21:57:32 EDT
The resulting config details are quite large (>2M saved as a file).  See bug
94878 for details.
Comment 2 Nick Edgar CLA 2005-05-17 14:45:09 EDT
The time seems to be going into materializing the update site objects.
If I comment out the ConfigurationLogUpdateSection contribution from
o.e.ui.ide's plugin.xml, it gets much faster.

I'll attach a profile.
Comment 3 Dorian Birsan CLA 2005-05-17 14:49:10 EDT
Yes, all the features are parsed, etc.
This slow down can also be noticed the first time update is invoked via the 
install wizard or the configuration manager dialog.

The About could be faster if only the branded features would be displayed, as 
the code is in the configurator and is much lighter.
Comment 4 Nick Edgar CLA 2005-05-17 14:57:04 EDT
Created attachment 21285 [details]
Profile of first invocation of "Configuration Details" dialog from target workspace
Comment 5 Nick Edgar CLA 2005-05-17 15:02:35 EDT
Moving to Update for consideration.

Things to note in the above profile:
- 1 call to ConfigurationLogUpdateSection.write() leads to 100 calls to
InstallConfigurationModel.isCurrent() which leads to 197 calls to
InternalSiteManager.getSite() which leads to 9 calls to
SiteFileFactory.parsePackagedPlugins() which leads to 574 JarFile and
BundleManifest creations

- see also the other expansions
Comment 6 Nick Edgar CLA 2005-05-17 15:07:32 EDT
The output from this section is as follows.
Looks like a lot of work just to dump the config history and "isCurrent" state.
The section also dumps update activities within each config, but there aren't
any in this case.

*** Update Manager Log:

Configuration=Fri Apr 29 15:44:08 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 10:42:34 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 11:09:57 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 11:13:57 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 11:58:51 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 12:03:08 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 17:54:51 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 17:59:13 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 18:16:53 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 18:28:36 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 18:40:39 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 03 18:52:51 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 12:49:04 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 12:51:46 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 14:37:38 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 14:38:46 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 15:31:53 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 15:46:48 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 17:20:23 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 17:29:12 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 04 17:35:52 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 13:21:52 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 14:26:16 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 14:47:54 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 16:09:32 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 16:40:33 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 05 17:00:32 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 09:51:05 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 11:23:42 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 15:55:06 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 15:58:21 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 15:58:56 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:32:14 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:32:32 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:33:14 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:33:38 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:34:12 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:38:29 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:39:49 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:40:41 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:41:17 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:42:11 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:51:43 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:52:01 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:53:10 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:55:25 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:55:43 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 06 16:58:36 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 13:57:43 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 13:59:39 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 14:06:11 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 15:02:53 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 15:10:41 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 09 15:19:17 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 14:00:24 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 14:10:06 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 14:11:37 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 15:42:50 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 15:49:00 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 15:57:02 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 17:03:50 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 17:06:25 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 17:39:15 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 18:07:01 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 18:35:20 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 18:44:17 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 10 18:51:20 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 10:20:52 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 10:27:39 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 11:35:31 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 11:36:32 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 13:46:10 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 14:36:05 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 14:44:33 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 14:58:22 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 15:10:15 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 16:51:26 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Wed May 11 22:18:38 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 12 11:17:52 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Thu May 12 15:56:54 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 12:03:29 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 13:41:50 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 13:49:12 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 14:03:23 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 14:05:48 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 16:05:03 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 16:11:16 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Fri May 13 16:14:38 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 11:10:09 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 15:23:53 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 16:01:31 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 17:11:48 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 17:21:29 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Mon May 16 17:27:43 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 13:37:35 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 13:53:08 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 14:06:43 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 14:25:15 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 14:38:22 EDT 2005
Is current configuration=false

----------------------------------------------------
Configuration=Tue May 17 14:44:18 EDT 2005
Is current configuration=true
Comment 7 Branko Tripkovic CLA 2005-05-25 15:34:35 EDT
Nick,
After looking at the output and talking to Konrad Kolosowski it looks like this
output might be more useful if it was showing more about current configuration
then printing out previous configurations. There is also considerable
performance gain from this. We have created patch for
ConfigurationLogUpdateSection to show what we are proposing. This patch should
be applied on the org.eclipse.ui.ide project.

Comment 8 Branko Tripkovic CLA 2005-05-25 15:38:28 EDT
Created attachment 21774 [details]
ConfigurationLogUpdateSection change
Comment 9 Konrad Kolosowski CLA 2005-05-25 15:50:14 EDT
I released Branko's changes to org.eclipse.update.core plug-in to perform 
light weight initialization, but changing ui.ide to use update.configurator 
instead of update.core, if possible, will give much more gain.
Comment 10 Branko Tripkovic CLA 2005-05-25 16:28:51 EDT
Strings in this patch are not externalized, but I marked them as
non-externalizable, so that it can compile. If this change is accepted they
should be externalized before release.
Comment 11 Nick Edgar CLA 2005-05-25 16:42:24 EDT
I'm fine with the workbench change.  Would you be able to supply a patch with
properly NLSed strings?
Comment 12 Branko Tripkovic CLA 2005-05-25 18:57:33 EDT
Created attachment 21793 [details]
properly NLSed strings

this is patch with strings properly externalized and dates internationalized
Comment 13 Nick Edgar CLA 2005-05-25 23:38:36 EDT
Patch applied.  Thanks Branko, this is a big improvement, both in performance
and content.
Comment 14 Branko Tripkovic CLA 2005-05-26 01:26:39 EDT
thanks
Comment 15 Nick Edgar CLA 2005-05-27 10:43:13 EDT
When I first tried this, the list of plug-in paths appeared sorted, but it isn't
in I20050527.  You might want to consider sorting the list, to make it easier to
read.  We do this in the system properties and installed plug-ins list, but not
the preference section (we just append the usual pref export format, which isn't
sorted).