This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 59596 - [DevRev] TCR: Startup regression
Summary: [DevRev] TCR: Startup regression
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: -- Other -- (show other bugs)
Version: 5.x
Hardware: All All
: P1 blocker (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
Depends on: 59967 64459
Blocks:
  Show dependency tree
 
Reported: 2005-06-03 14:24 UTC by _ rkubacki
Modified: 2008-12-22 18:55 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description _ rkubacki 2005-06-03 14:24:37 UTC
This is a TCR that resulted from OpenIDE split review.

Current changes done for this split cause startup regression that needs to be
fixed. Otherwise we cannot meet performance criteria for the release.
Comment 1 Jaroslav Tulach 2005-06-26 03:41:58 UTC
I've put some initial sketch of the cache into CVS. I've branched the core 
module. The branch is named first_59596 and is now rooted at BLD200506231800. 
Use: 
 
cvs upd -r first_59596 core 
 
Comment 2 Jaroslav Tulach 2005-07-11 14:12:43 UTC
core branch made up to date with build BLD200507110943 
Comment 3 _ rkubacki 2005-07-12 14:17:35 UTC
I measured the startup of build 200507102200 and of the build provided by Yarda
for a case when 2 projects are opened and there are few Java editors.

Warm start remains the same. Cold start is improved - 3.9% to get main window
painted and 4.6% when measure until classpath scan is finished and folds and
navigator updated. 3.3% improvement for total startup including warmup. 
Comment 4 Antonin Nebuzelsky 2005-07-13 10:52:35 UTC
Cold startup improvements are nice, but we need the warm startup regression fixed.

Also, the percentages of cold startup improvements as stated don't say much
because they are against the current trunk, and I don't see any numbers what was
originally the cold startup regression.
Comment 5 Jaroslav Tulach 2005-07-16 19:44:37 UTC
I am relatively satisfied with made progress, but I am going to try a bit 
more. That is why I've branched the core as second_59596 and I will try to 
implement complete cache with precomputed list of packages. 
Comment 6 Jaroslav Tulach 2005-07-20 09:42:04 UTC
second_59596 branch was made up to date with BLD200507191800 
Comment 7 Jaroslav Tulach 2005-08-01 07:22:24 UTC
Made up-to-date with BLD200507281800 - latest one available today ;-(  
Comment 8 Jaroslav Tulach 2005-08-04 14:19:24 UTC
Branch second_59596 has been merged into trunk. Let's see the result. The work  
is not finished yet:  
  1. we need to fight with too early GC, probably caused by  
ClassLoaderCache$Node  
  2. there can be some CPU friendly optimilizations in the iterateInOrder  
However I am asking for lowering the priority if the regression gets bellow 3%  
- e.g. if the improvement after today's integration will give us 2 or more  
percent speedup as the original regression was 5% (according to my knowledge). 
  
cvs ci -m "#59596: Speeding up startup by two or even a bit more %"  
Checking in core/bootstrap/src/org/netbeans/JarClassLoader.java;  
/cvs/core/bootstrap/src/org/netbeans/JarClassLoader.java,v  <--   
JarClassLoader.java  
new revision: 1.19; previous revision: 1.18  
done  
Checking in core/bootstrap/src/org/netbeans/Main.java;  
/cvs/core/bootstrap/src/org/netbeans/Main.java,v  <--  Main.java  
new revision: 1.25; previous revision: 1.24  
done  
Checking in core/bootstrap/src/org/netbeans/Module.java;  
/cvs/core/bootstrap/src/org/netbeans/Module.java,v  <--  Module.java  
new revision: 1.3; previous revision: 1.2  
done  
Checking in core/bootstrap/src/org/netbeans/ModuleInstaller.java;  
/cvs/core/bootstrap/src/org/netbeans/ModuleInstaller.java,v  <--   
ModuleInstaller.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/bootstrap/src/org/netbeans/ModuleManager.java;  
/cvs/core/bootstrap/src/org/netbeans/ModuleManager.java,v  <--   
ModuleManager.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/bootstrap/src/org/netbeans/ProxyClassLoader.java;  
/cvs/core/bootstrap/src/org/netbeans/ProxyClassLoader.java,v  <--   
ProxyClassLoader.java  
new revision: 1.17; previous revision: 1.16  
done  
Checking in core/bootstrap/test/unit/src/org/fakepkg/FakeIfceHidden.java;  
/cvs/core/bootstrap/test/unit/src/org/fakepkg/FakeIfceHidden.java,v  <--   
FakeIfceHidden.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/bootstrap/test/unit/src/org/netbeans/AskDirectlyTest.java;  
/cvs/core/bootstrap/test/unit/src/org/netbeans/AskDirectlyTest.java,v  <--   
AskDirectlyTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/bootstrap/test/unit/src/org/netbeans/DirSourceTest.java;  
/cvs/core/bootstrap/test/unit/src/org/netbeans/DirSourceTest.java,v  <--   
DirSourceTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/bootstrap/test/unit/src/org/netbeans/JarClassLoaderTest.java;  
/cvs/core/bootstrap/test/unit/src/org/netbeans/JarClassLoaderTest.java,v  <--   
JarClassLoaderTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/startup/src/org/netbeans/core/startup/ClassLoaderCache.java;  
/cvs/core/startup/src/org/netbeans/core/startup/ClassLoaderCache.java,v  <--   
ClassLoaderCache.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in core/startup/src/org/netbeans/core/startup/NbInstaller.java;  
/cvs/core/startup/src/org/netbeans/core/startup/NbInstaller.java,v  <--   
NbInstaller.java  
new revision: 1.6; previous revision: 1.5  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/ClassLoaderCacheContent.properties;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/ClassLoaderCacheContent.properties,v   
<--  ClassLoaderCacheContent.properties  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/ClassLoaderCacheTest.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/ClassLoaderCacheTest.java,v   
<--  ClassLoaderCacheTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/MistakeOnRadimsComputer.properties;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/MistakeOnRadimsComputer.properties,v   
<--  MistakeOnRadimsComputer.properties  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerCacheIsEnabledTest.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerCacheIsEnabledTest.java,v   
<--  NbInstallerCacheIsEnabledTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerInLayerTest.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerInLayerTest.java,v   
<--  NbInstallerInLayerTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerPackageOwnersTest.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerPackageOwnersTest.java,v   
<--  NbInstallerPackageOwnersTest.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerTest9.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/NbInstallerTest9.java,v   
<--  NbInstallerTest9.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/SetupHid.java;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/SetupHid.java,v  <--   
SetupHid.java  
new revision: 1.2; previous revision: 1.1  
done  
Checking in  
core/startup/test/unit/src/org/netbeans/core/startup/jars/.cvsignore;  
/cvs/core/startup/test/unit/src/org/netbeans/core/startup/jars/.cvsignore,v   
<--  .cvsignore  
new revision: 1.2; previous revision: 1.1  
  
Comment 9 Jaroslav Tulach 2005-08-11 19:51:01 UTC
Rolled back.  
  
 
Date: 2005/08/11 19:33:57 
Members: 
bootstrap/src/org/netbeans/JarClassLoader.java:1.19->1.20 
bootstrap/src/org/netbeans/Main.java:1.26->1.27 
bootstrap/src/org/netbeans/Module.java:1.4->1.5 
bootstrap/src/org/netbeans/ModuleInstaller.java:1.2->1.3 
bootstrap/src/org/netbeans/ModuleManager.java:1.2->1.3 
bootstrap/src/org/netbeans/ProxyClassLoader.java:1.17->1.18 
bootstrap/test/unit/src/org/netbeans/JarClassLoaderTest.java:1.2->1.3 
startup/src/org/netbeans/core/startup/NbInstaller.java:1.11->1.12       
startup/test/unit/src/org/netbeans/core/startup/NbInstallerTest9.java:1.2->1.3 
startup/test/unit/src/org/netbeans/core/startup/SetupHid.java:1.2->1.3 
 
Comment 10 Jaroslav Tulach 2005-09-30 11:52:15 UTC
After a lot of various minor fixes the regression seems to be gone: 
 
Startup Time of build 200509281800 in comparison with Netbeans 4.1: 
+------------------------------------------------------------------+ 
|               | Linux   | JDS 3   | Sol 9   |  Sol 10 |  Win XP  | 
+------------------------------------------------------------------+ 
| 1st usage     | -4.4  % | -5.6  % | -0.2  % |  0.0  % |  +0.9  % | 
| next usage    |-10.7  % | -8.8  % | -4.4  % | -4.0  % |  -3.4  % | 
| 10 files open | -1.1  % | -4.2  % | +1.9  % | -0.9  % |  -1.7  % | 
+------------------------------------------------------------------+ 
 
I believe that this issue is now fixed.