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.
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.
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
core branch made up to date with build BLD200507110943
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.
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.
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.
second_59596 branch was made up to date with BLD200507191800
Made up-to-date with BLD200507281800 - latest one available today ;-(
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
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
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.