[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[m2e-users] M2Eclipse Performance (Was: Having a Bad Week - eclipse sick)
|
I have tested m2eclipse performance.
These are my first impressions:
1) ProjectRegistryRefreshJob changes a workspace and fires a lot of
resource change listeners.
When creating a marker, for instance, this job fires five resource
change listeners (createMarker and four the setAttribute methods).
This job should be WorkspaceJob.
2) ProjectRegistryRefreshJob and MavenBuilder (a builder job) aren't
synchronized what often causes StaleMutableProjectRegistryException
(ProjectRegistryManager, line 319) and that is the cause of starting
this job again.
3) LifecycleMappingFactory.getBundleMetadataSources is too often called.
Every time it is called it reads the extension point registry and
lifecycle mapping xml files. Caching would speed up the overall performance.
4) The BuildPathManager.configureAttchedSourcesAndJavadoc method is very
slow. I have improved it a little (DownloadSourcesJob isn't started when
the download preferences are off), but it is possible to improve it more.
5) NexusIndexManager.mavenProjectChanged(...) always removes and adds
back an artifact to the index repository. Performance will be much
better if the index repository is updated only when the artifact doesn't
exist or is changed. Searching the index repository is much faster than
removing and adding artifacts.
6) MarkerLocationService.addEditorHintMarkers calls two methods that
acquire the WTP's IDOMModel
(StructuredModelManager.getModelManager().getModelForRead(...)) and
release it. WTP's methods can be slow for larger files and it would be
better to acquire/release the model once for
MarkerLocationService.addEditorHintMarkers.
MarkerLocationService.addEditorHintMarkers is used only once.
7) ProjectRegistryManager.applyMutableProjectRegistry calls
stateReader.writeWorkspaceState(projectRegistry) when refreshing a
project. Since the workspaceState.ser file is only used when starting a
workspace, this method can be used only when stopping the
org.eclipse.m2e.core bundle
8) BuildPathManager.mavenProjectChanged updates Maven classpath
containers of all projects no matter they are changed or not. They
should be updated only for relevant events (event.getFlags() != 0).
9) ProjectRegistryManager.refresh(MutableProjectRegistry newState,
DependencyResolutionContext context, IProgressMonitor monitor) aggressively
read Maven projects.
I have tested JBoss AS 7 (https://github.com/jbossas/jboss-as). When
calling Maven>Update Project Configuration on the jboss-as-parent
project, the MavenImpl.readProject is called for about 2-6 times for
each project in the workspace. Sometimes this method lasts short time
(Maven cache is active), but sometimes takes a longer time.
I have tried to cache MavenProjectFacade in each of the two phases so
that MavenImpl.readProject is called two times for every project (once
per each phase). Not sure if it is possible to make this method to be
run only once.
10) The Maven Pom Editor has a huge memory leak. Just opening/closing
jboss-as-parent/pom.xml will cause the JVM heap size to increase by
2-10MB which can cause Eclipse to crash (OOM).
I have implemented 1-9 enhancements. The Maven>Update Project
Configuration action on the jboss-as-parent project is much faster (2-3
times). Editing the pom.xml file of the jboss-as-parent project is 2-3
times faster. The Maven builder is improved 2-3 times.
Would you like me to create a patch?
Snjeza
Snjezana Peco wrote:
Hello Steve,
I would like to test this a bit more. Could you provide me with more
details?
Steve Cohen wrote:
and, sad to say, it's mostly because of the combination of m2eclipse,
helios, subversive and the whole fracking mess.
Eclipse has become less and less usable. I don't know who's to
blame, which plugin is the cause or whether it's the whole platform
or some combination. Rare is the day of heavy development where
Eclipse doesn't crash many times.
Every crash is different. Sometimes I have to delete the .lock file.
Other times I don't. Other times I can't do it without killing
processes.
Could you check if there are files named hs_err_pidXXXX.log in your
working directory (your ECLIPSE_HOME probably)?
If so, could you attach any of them?
eclipse-jee-helios-SR2
m2eclipse, whatever the latest that's available today
subversive
hibernate plugin
Could you attach your configuration : Help>About Eclipse
SDK>Installation Details>Configuration
There are still user interface actions that provoke crashes.
What actions are causing the crash? Editing pom.xml, cleaning the
project, svn checkout/merge or something else.
Thanks,
Snjeza
_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users