Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 64214 Details for
Bug 161175
JarPackageFragmentRoot slow to initialize
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Improved fix and performance test
161175a.txt (text/plain), 6.45 KB, created by
Jerome Lanneluc
on 2007-04-18 13:04:15 EDT
(
hide
)
Description:
Improved fix and performance test
Filename:
MIME Type:
Creator:
Jerome Lanneluc
Created:
2007-04-18 13:04:15 EDT
Size:
6.45 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core.tests.performance >Index: src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java,v >retrieving revision 1.23 >diff -u -r1.23 FullSourceWorkspaceModelTests.java >--- src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java 2 Apr 2007 07:28:54 -0000 1.23 >+++ src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java 18 Apr 2007 17:04:27 -0000 >@@ -16,21 +16,47 @@ > import java.io.PrintStream; > import java.util.ArrayList; > >-import junit.framework.*; >+import junit.framework.Test; > > import org.eclipse.core.resources.IFile; > import org.eclipse.core.resources.IProject; >+import org.eclipse.core.resources.IProjectDescription; > import org.eclipse.core.resources.IWorkspace; > import org.eclipse.core.resources.IWorkspaceRoot; > import org.eclipse.core.resources.ResourcesPlugin; >-import org.eclipse.core.runtime.*; >-import org.eclipse.jdt.core.*; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.jdt.core.IClasspathEntry; >+import org.eclipse.jdt.core.ICompilationUnit; >+import org.eclipse.jdt.core.IField; >+import org.eclipse.jdt.core.IInitializer; >+import org.eclipse.jdt.core.IJavaElement; >+import org.eclipse.jdt.core.IJavaModel; >+import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jdt.core.IMethod; >+import org.eclipse.jdt.core.IPackageFragment; >+import org.eclipse.jdt.core.IProblemRequestor; >+import org.eclipse.jdt.core.IType; >+import org.eclipse.jdt.core.JavaCore; >+import org.eclipse.jdt.core.JavaModelException; >+import org.eclipse.jdt.core.WorkingCopyOwner; > import org.eclipse.jdt.core.dom.AST; > import org.eclipse.jdt.core.dom.CompilationUnit; >-import org.eclipse.jdt.core.search.*; >+import org.eclipse.jdt.core.search.IJavaSearchConstants; >+import org.eclipse.jdt.core.search.IJavaSearchScope; >+import org.eclipse.jdt.core.search.SearchEngine; >+import org.eclipse.jdt.core.search.SearchMatch; >+import org.eclipse.jdt.core.search.SearchPattern; >+import org.eclipse.jdt.core.search.SearchRequestor; >+import org.eclipse.jdt.core.search.TypeNameRequestor; > import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests; > import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests.ProblemRequestor; >-import org.eclipse.jdt.internal.core.*; >+import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner; >+import org.eclipse.jdt.internal.core.IJavaElementRequestor; >+import org.eclipse.jdt.internal.core.JavaElement; >+import org.eclipse.jdt.internal.core.JavaProject; >+import org.eclipse.jdt.internal.core.NameLookup; > import org.eclipse.test.performance.Performance; > > /** >@@ -854,6 +880,68 @@ > } > } > >+/* >+ * Creates a simple Java project with no source folder and only rt.jar on its classpath. >+ */ >+private IJavaProject createJavaProject(String name) throws CoreException { >+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name); >+ if (project.exists()) >+ project.delete(true, null); >+ project.create(null); >+ project.open(null); >+ IProjectDescription description = project.getDescription(); >+ description.setNatureIds(new String[] {JavaCore.NATURE_ID}); >+ project.setDescription(description, null); >+ IJavaProject javaProject = JavaCore.create(project); >+ javaProject.setRawClasspath(new IClasspathEntry[] {JavaCore.newVariableEntry(new Path("JRE_LIB"), null, null)}, null); >+ return javaProject; >+ >+} >+/* >+ * Performance test for the first use of findType(...) >+ * (see bug 161175 JarPackageFragmentRoot slow to initialize) >+ */ >+public void testFindType() throws CoreException { >+ >+ // get 20 projects >+ IJavaModel model = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()); >+ int max = 20; >+ IJavaProject[] projects = new IJavaProject[max]; >+ for (int i = 0; i < max; i++) { >+ projects[i] = createJavaProject("FindType" + i); >+ } >+ AbstractJavaModelTests.waitUntilIndexesReady(); >+ AbstractJavaModelTests.waitForAutoBuild(); >+ >+ try { >+ // warm up >+ for (int i = 0; i < 5; i++) { >+ model.close(); >+ for (int j = 0; j < max; j++) { >+ projects[j].findType("java.lang.Object"); >+ } >+ } >+ >+ // measure performance >+ for (int i = 0; i < 10; i++) { >+ model.close(); >+ runGc(); >+ startMeasuring(); >+ for (int j = 0; j < max; j++) { >+ projects[j].findType("java.lang.Object"); >+ } >+ stopMeasuring(); >+ } >+ >+ commitMeasurements(); >+ assertPerformance(); >+ } finally { >+ for (int i = 0; i < max; i++) { >+ projects[i].getProject().delete(false, null); >+ } >+ } >+} >+ > public void testStartJDTPlugin() throws JavaModelException { > // store current settings > long oldSnapInterval = ENV.getWorkspace().getDescription().getSnapshotInterval(); >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java,v >retrieving revision 1.44 >diff -u -r1.44 JavaProjectElementInfo.java >--- model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java 13 Apr 2007 16:02:15 -0000 1.44 >+++ model/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java 18 Apr 2007 17:04:29 -0000 >@@ -206,13 +206,17 @@ > roots = new IPackageFragmentRoot[0]; > reverseMap.clear(); > } >+ >+ HashMap otherRoots = JavaModelManager.getJavaModelManager().deltaState.otherRoots; > HashtableOfArrayToObject fragmentsCache = new HashtableOfArrayToObject(); > HashtableOfArrayToObject isPackageCache = new HashtableOfArrayToObject(); > for (int i = 0, length = roots.length; i < length; i++) { > IPackageFragmentRoot root = roots[i]; > IJavaElement[] frags = null; > try { >- if (root.isArchive() && !root.isOpen()) { >+ if (root.isArchive() >+ && !root.isOpen() >+ && otherRoots.get(((JarPackageFragmentRoot) root).jarPath) == null/*only if jar belongs to 1 project (https://bugs.eclipse.org/bugs/show_bug.cgi?id=161175)*/) { > JarPackageFragmentRootInfo info = new JarPackageFragmentRootInfo(); > ((JarPackageFragmentRoot) root).computeChildren(info, new HashMap()); > frags = info.children;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 161175
:
52263
|
64166
| 64214