View | Details | Raw Unified | Return to bug 161175 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java (+42 lines)
Lines 854-859 Link Here
854
	}
854
	}
855
}
855
}
856
856
857
/*
858
 * Performance test for the first use of findType(...)
859
 * (see bug 161175 JarPackageFragmentRoot slow to initialize)
860
 */
861
public void testFindType() throws CoreException {
862
	// get 20 projects
863
	IJavaModel model = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot());
864
	IJavaProject[] allProjects = model.getJavaProjects();
865
	int max = 20;
866
	IJavaProject[] projects = new IJavaProject[max];
867
	int index = 0;
868
	for (int i = 0, length = allProjects.length; i < length; i++) {
869
		if (allProjects[i].getElementName().startsWith("org.eclipse")) {
870
			projects[index++] = allProjects[i];
871
			if (index == max)
872
				break;
873
		}
874
	}
875
	
876
	// warm up
877
	for (int i = 0; i < 5; i++) {
878
		model.close();
879
		for (int j = 0; j < max; j++) {
880
			projects[j].findType("java.lang.Object");
881
		}
882
	}
883
		
884
	// measure performance
885
	for (int i = 0; i < 10; i++) {
886
		model.close();
887
		runGc();
888
		startMeasuring();
889
		for (int j = 0; j < max; j++) {
890
			projects[j].findType("java.lang.Object");
891
		}
892
		stopMeasuring();
893
	}
894
895
	commitMeasurements();
896
	assertPerformance();
897
}
898
857
public void testStartJDTPlugin() throws JavaModelException {
899
public void testStartJDTPlugin() throws JavaModelException {
858
	// store current settings
900
	// store current settings
859
	long oldSnapInterval = ENV.getWorkspace().getDescription().getSnapshotInterval();	
901
	long oldSnapInterval = ENV.getWorkspace().getDescription().getSnapshotInterval();	
(-)model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java (-1 / +11 lines)
Lines 206-218 Link Here
206
				roots = new IPackageFragmentRoot[0];
206
				roots = new IPackageFragmentRoot[0];
207
				reverseMap.clear();
207
				reverseMap.clear();
208
			}
208
			}
209
			
210
			DeltaProcessingState deltaState = JavaModelManager.getJavaModelManager().deltaState;
211
			HashMap otherRoots = deltaState.oldOtherRoots;
212
			if (otherRoots == null) {
213
				deltaState.initializeRoots();
214
				otherRoots = deltaState.otherRoots;
215
			}
216
				
209
			HashtableOfArrayToObject fragmentsCache = new HashtableOfArrayToObject();
217
			HashtableOfArrayToObject fragmentsCache = new HashtableOfArrayToObject();
210
			HashtableOfArrayToObject isPackageCache = new HashtableOfArrayToObject();
218
			HashtableOfArrayToObject isPackageCache = new HashtableOfArrayToObject();
211
			for (int i = 0, length = roots.length; i < length; i++) {
219
			for (int i = 0, length = roots.length; i < length; i++) {
212
				IPackageFragmentRoot root = roots[i];
220
				IPackageFragmentRoot root = roots[i];
213
				IJavaElement[] frags = null;
221
				IJavaElement[] frags = null;
214
				try {
222
				try {
215
					if (root.isArchive() && !root.isOpen()) {
223
					if (root.isArchive() 
224
							&& !root.isOpen() 
225
							&& otherRoots.get(((JarPackageFragmentRoot) root).jarPath) == null/*only if jar belongs to 1 project (https://bugs.eclipse.org/bugs/show_bug.cgi?id=161175)*/) {
216
						JarPackageFragmentRootInfo info = new JarPackageFragmentRootInfo();
226
						JarPackageFragmentRootInfo info = new JarPackageFragmentRootInfo();
217
						((JarPackageFragmentRoot) root).computeChildren(info, new HashMap());
227
						((JarPackageFragmentRoot) root).computeChildren(info, new HashMap());
218
						frags = info.children;
228
						frags = info.children;

Return to bug 161175