Community
Participate
Working Groups
Guessing arguments names takes 5-10 seconds with CPU 100% on reasonably fast T30 thinkpad. The problem appears to be related to number of jar files or classes in project's classpath -- everything works fine with ~62 jars but very slow with ~63 jars. Changed between SUN JDK 1.4.2 and 1.5.0 does not make any difference. The problem exists both in 20041013 and 20041019 integration builds. I start Eclipse with -vmargs -Xms128m -Xmx512m and there is no O/S swapping. When CPU is 100% I consistently see the following in thread dump "main" prio=7 tid=0x002377c8 nid=0x724 runnable [0x0006e000..0x0006fc3c] at java.util.zip.ZipFile.freeEntry(Native Method) at java.util.zip.ZipFile.access$1100(ZipFile.java:35) at java.util.zip.ZipFile$3.nextElement(ZipFile.java:436) - locked <0x072b0060> (a java.util.zip.ZipFile) at java.util.zip.ZipFile$3.nextElement(ZipFile.java:413) at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.computeChildren(JarPackageFragmentRoot.java:86) at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:173) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:202) at org.eclipse.jdt.internal.core.JarPackageFragment.generateInfos(JarPackageFragment.java:113) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:553) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:291) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:277) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:232) at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType(JavaElement.java:246) at org.eclipse.jdt.internal.core.JarPackageFragment.getClassFiles(JarPackageFragment.java:120) at org.eclipse.jdt.internal.core.NameLookup.seekTypesInBinaryPackage(NameLookup.java:617) at org.eclipse.jdt.internal.core.NameLookup.seekTypes(NameLookup.java:598) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:405) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:376) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:484) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1172) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1144) at org.eclipse.jdt.internal.ui.text.java.ParameterGuesser.isAssignable(ParameterGuesser.java:663) at org.eclipse.jdt.internal.ui.text.java.ParameterGuesser.isTypeMatch(ParameterGuesser.java:638) at org.eclipse.jdt.internal.ui.text.java.ParameterGuesser.findFieldsMatchingType(ParameterGuesser.java:589) at org.eclipse.jdt.internal.ui.text.java.ParameterGuesser.parameterProposals(ParameterGuesser.java:390) at org.eclipse.jdt.internal.ui.text.java.ParameterGuessingProposal.guessParameters(ParameterGuessingProposal.java:254) at org.eclipse.jdt.internal.ui.text.java.ParameterGuessingProposal.computeGuessingCompletion(ParameterGuessingProposal.java:284) at org.eclipse.jdt.internal.ui.text.java.ParameterGuessingProposal.apply(ParameterGuessingProposal.java:144) at org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal.apply(JavaCompletionProposal.java:557) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertProposal(CompletionProposalPopup.java:415) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.selectProposalWithMask(CompletionProposalPopup.java:362) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.verifyKey(CompletionProposalPopup.java:720) at org.eclipse.jface.text.contentassist.ContentAssistant$InternalListener.verifyKey(ContentAssistant.java:622) at org.eclipse.jface.text.TextViewer$VerifyKeyListenersManager.verifyKey(TextViewer.java:403) at org.eclipse.swt.custom.StyledTextListener.handleEvent(StyledTextListener.java:55) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:800) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:824) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:809) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:617) at org.eclipse.swt.custom.StyledText.handleKeyDown(StyledText.java:5000) at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:4747) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:800) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:824) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:809) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:837) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:833) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1096) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3066) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2977) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3351) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1489) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2441) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1443) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1414) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:271) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:704) at org.eclipse.core.launcher.Main.main(Main.java:688) I'm on Windows 2000 SP4 if this makes any difference.
Name lookup improvements have been released to 20041019. Can you reproduce this? Does it depend on the JAR itself that you add or simply the number of JARs? Moving to J Core for comment.
Yes, the problem still exists in 20041019. It does not seem to depend on specific jars, just the number -- in my test I picked random jars I found on my file system. The problem appeared after certain number of jars (or classes). Then I removed few jars, the problem disappeared. Then I added few other jars, the problem came back. I'll provide specific list of jars to reproduce the problem later today.
Created attachment 15346 [details] bug76747.zip Zip file with project that demonstrates the problem. The project only references jar files from ECLIPSE_HOME so it should be easy for you to reproduce the problem.
Want to second this. I had to turn off this feature when I upgraded to 3.1 because it was taking 40 to 50 seconds for each time I let it complete a method signature. This feature was working great in 3.0 M2 but now it's hideously slow.
*** This bug has been marked as a duplicate of 75153 ***