vscode-java-dependency icon indicating copy to clipboard operation
vscode-java-dependency copied to clipboard

Startup performance

Open jameshearttech opened this issue 1 year ago • 5 comments

We have a large monorepo (50+ Maven projects). We want to use VS Code dev containers for local development, but it takes forever to start up (i.e., import projects, etc.).

For context, our laptops are running Windows 11 and we're using Podman Desktop with WSL as the container host. We are using volumes rather than the default bind mount, which has improved performance. We are building the images locally which also decreases the time it takes to create or rebuild a dev container.

On a fresh volume the initial import takes a very long time. Maybe 2 hours? Just a guess. Reloading the window or rebuilding the container also takes a long time. Maybe 30 minutes - 1 hour?

Is this expected? Is there anything we can do to improve performance?

jameshearttech avatar Sep 01 '24 06:09 jameshearttech

Is it a single Maven project with 50+ sub-modules?

Do you need to open all those modules together, or you just need to use some of them for development?

jdneo avatar Sep 02 '24 01:09 jdneo

Is it a single Maven project with 50+ sub-modules?

No submodules. Every project has it's own pom. It's roughly half services and half libraries.

Do you need to open all those modules together, or you just need to use some of them for development?

Ideally they are all opened together.

jameshearttech avatar Sep 02 '24 02:09 jameshearttech

If all the projects are required to open in vscode. Maybe you can try to turn off the auto build. The side effect is that, if you turn off the auto build, you may not be able to find some errors at the first time. You need manually trigger build on demand.

The setting is java.autobuild.enabled

jdneo avatar Sep 02 '24 05:09 jdneo

What about java.maxConcurrentBuilds? I see the default value is 1. I changed the value to 4. The change seems to have increased how quickly building occurs, but does it only apply to building (i.e., not importing, etc.). If so, is there any way to increase the number of concurrent imports and refreshes etc.?

jameshearttech avatar Sep 04 '24 22:09 jameshearttech

java.maxConcurrentBuilds can boost the build time.

Meanwhile, you can increase the JVM memory via the setting java.jdt.ls.vmargs, which should help with the perf as well.

jdneo avatar Sep 05 '24 01:09 jdneo