Bug 76747 - Codeassist guess filled arguments names very slow
Summary: Codeassist guess filled arguments names very slow
Status: RESOLVED DUPLICATE of bug 75153
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-Core-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-21 10:29 EDT by Igor Fedorenko CLA
Modified: 2004-10-27 13:44 EDT (History)
1 user (show)

See Also:


Attachments
bug76747.zip (2.84 KB, application/octet-stream)
2004-10-22 10:00 EDT, Igor Fedorenko CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Fedorenko CLA 2004-10-21 10:29:16 EDT
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.
Comment 1 Dani Megert CLA 2004-10-22 03:37:09 EDT
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.
Comment 2 Igor Fedorenko CLA 2004-10-22 08:26:44 EDT
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.
Comment 3 Igor Fedorenko CLA 2004-10-22 10:00:38 EDT
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.
Comment 4 Lance Eason CLA 2004-10-25 11:18:26 EDT
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.
Comment 5 Frederic Fusier CLA 2004-10-27 13:44:04 EDT

*** This bug has been marked as a duplicate of 75153 ***