Java Refactoring Performance Improvements


NetBeans 6.8

Looking for 6500 usages of a class, one huge project. See details in the issue: Find usages very slow when thousands of usages

5.5 75-95s -Xmx256M 75-95s
6.5.1 OOME -Xmx768M 50-65s
6.7.1 140-175s -Xmx768M 85-93s
6.8 45-48s --
eclipse galileo 12-15s

NetBeans 6.7

Find Subclasses improvements

New automated tests used. Improvement is tracked in issue #120145.

Test-case: Find implementors of java.lang.Runnable in jEdit project

build 1st 2nd 3rd
before 11051ms 11353ms 10700ms
after 9179ms 9378ms 8890ms

Test-case: Find subclasses of java.lang.Object in a small project

See FindSubclassesTest for test details.

before after
did not finish 0.8-1.3s

Test-case: Find subclasses of java.lang.Runnable in mid-sized project (not available yet)

Move class refactoring

MoveClassPerfTest class is used for testing.

build 1st 2nd 3rd 4th
before 28810ms 29521ms 29333ms 28743ms
after 4615ms 4813ms 4994ms 4723ms

NetBeans 6.5

Move Class Refactoring

Honza Pokorsky provided patch which reuses the Javac compiler during refactoring processing. It stops producing of garbage and improves the refactoring:

Test-case: Move the jEdit class from org.gjt.sp.jedit to org package. Old build, without optimization:

1st 2nd 3rd
21937 19257 16241

Current build 080801, with optimization:

1st 2nd 3rd
13635 6793 9231

Rename Refactoring

Prepare phase when renaming jEdit class:

Old build:

1st 2nd 3rd 4th 5th
cold 11907 11803 12059 11104 12113
warm 9450 9773 9983 9713 9850

Current build 080811:

1st 2nd 3rd 4th 5th
cold 9642 9536 10263 9397 10707
warm 8178 7914 8223 8019 8002
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo