Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Eclipse performance issue: enabling Breadcrumb makes Java editor very slow to type, even after restarting Eclipse #3809

Open
kl0ck opened this issue Jan 16, 2025 · 1 comment

Comments

@kl0ck
Copy link

kl0ck commented Jan 16, 2025

Describe the bug
Enabling Breadcrumb on Eclipse makes Java editor very slow to type, even after restarting Eclipse.

To Reproduce

  • Enable breadcrumb. Open a big Java file (10000+ lines). Try to edit the file, move the cursor around, feel the lag.
  • Disable breadcrumb and notice the lag disappeared.

Version info

  • Lombok v1.18.36 "Envious Ferret"
  • Platform: Eclipse IDE for Enterprise Java and Web Developers (includes Incubating components)
    Version: 2024-12 (4.34.0)
    Build id: 20241128-0757
    OS: Windows 11

Stack trace

!SUBENTRY 1 org.eclipse.ui.monitoring 1 0 2025-01-15 17:21:30.556
!MESSAGE Sample at 17:21:29.997 (+0,646s)
Thread 'main' tid=1 (RUNNABLE)
!STACK 0
Stack Trace
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:133)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:79)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:74)
	at lombok.eclipse.EclipseAST.traverseChildren(EclipseAST.java:231)
	at lombok.eclipse.EclipseNode.traverse(EclipseNode.java:69)
	at lombok.eclipse.EclipseAST.traverse(EclipseAST.java:224)
	at lombok.eclipse.TransformEclipseAST.go(TransformEclipseAST.java:226)
	at lombok.eclipse.TransformEclipseAST.transform(TransformEclipseAST.java:187)
	at [email protected]/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder)
	at [email protected]/java.lang.invoke.LambdaForm$MH/0x0000019759413c00.invoke(LambdaForm$MH)
	at [email protected]/java.lang.invoke.LambdaForm$MH/0x0000019758002400.invokeExact_MT(LambdaForm$MH)
	at [email protected]/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:155)
	at [email protected]/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at [email protected]/java.lang.reflect.Method.invoke(Method.java:580)
	at lombok.launch.PatchFixesHider$Util.invokeMethod(PatchFixesHider.java:146)
	at lombok.launch.PatchFixesHider$Transform.transform(PatchFixesHider.java:267)
	at org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:11446)
	at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:935)
	at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1024)
	at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:728)
	at org.eclipse.jdt.core.dom.CompilationUnitResolver$ECJCompilationUnitResolver.resolve(CompilationUnitResolver.java:100)
	at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:1004)
	at org.eclipse.jdt.apt.core.internal.env.BaseProcessorEnv.createASTs(BaseProcessorEnv.java:851)
	at org.eclipse.jdt.apt.core.internal.env.ReconcileEnv.openPipeline(ReconcileEnv.java:113)
	at org.eclipse.jdt.apt.core.internal.env.AbstractCompilationEnv.newReconcileEnv(AbstractCompilationEnv.java:98)
	at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.reconcile(APTDispatchRunnable.java:218)
	at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPTDuringReconcile(APTDispatchRunnable.java:162)
	at org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.reconcile(AptCompilationParticipant.java:271)
	at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation$1.run(ReconcileWorkingCopyOperation.java:314)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
	at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.notifyParticipants(ReconcileWorkingCopyOperation.java:299)
	at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:113)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:751)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:816)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1419)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1378)
	at org.eclipse.jdt.internal.corext.util.JavaModelUtil.reconcile(JavaModelUtil.java:644)
	at org.eclipse.jdt.internal.ui.actions.SelectionConverter.getElementAtOffset(SelectionConverter.java:279)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditorBreadcrumb.getCurrentInput(JavaEditorBreadcrumb.java:819)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditorBreadcrumb.setInput(JavaEditorBreadcrumb.java:790)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.setBreadcrumbInput(JavaEditor.java:2007)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.selectionChanged(JavaEditor.java:2272)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$EditorSelectionChangedListener.selectionChanged(JavaEditor.java:310)
	at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2725)
	at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2655)
	at org.eclipse.jface.text.TextViewer.postSelectionChanged(TextViewer.java:2638)
	at org.eclipse.jface.text.TextViewer$$Lambda/0x0000019758c74880.run(Unknown Source)
	at org.eclipse.jface.util.Throttler.lambda$0(Throttler.java:66)
	at org.eclipse.jface.util.Throttler$$Lambda/0x00000197585798d8.run(Unknown Source)
	at org.eclipse.jface.util.Throttler.lambda$1(Throttler.java:79)
	at org.eclipse.jface.util.Throttler$$Lambda/0x0000019758579b00.run(Unknown Source)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4177)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3793)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:663)
	at org.eclipse.ui.internal.Workbench$$Lambda/0x0000019758252598.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:570)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:178)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
	at [email protected]/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder)
	at [email protected]/java.lang.invoke.LambdaForm$MH/0x000001975801a800.invoke(LambdaForm$MH)
	at [email protected]/java.lang.invoke.LambdaForm$MH/0x0000019758002400.invokeExact_MT(LambdaForm$MH)
	at [email protected]/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:155)
	at [email protected]/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at [email protected]/java.lang.reflect.Method.invoke(Method.java:580)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1481)
@Rawi01
Copy link
Collaborator

Rawi01 commented Jan 30, 2025

I've created a large file for my test and haven't noticed any performance degradation. Can you share a sample file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants