Bug 576333 - [performance] optimize EclipseContext.getChildren()

EclipseContext.getChildren() is a hotspot during open/close editors.
The Set semantics for EclipseContext.children are not needed since
children are anyway only added once. Only a Bag is needed.
Also it is not needed to compute a Set that is returned by getChildren.
All Callers only use the for-each loop so its sufficient to just return
an Iterable which removes stale entries on the fly instead of copying
the set.
Also children can remove from parent by just clearing their self
reference. No need to search for it.

Change-Id: If1be10ba1bebfdd2901fe96abc9a9c6e0b47c6e2
Signed-off-by: Joerg Kubitz <jkubitz-eclipse@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.runtime/+/185959
Tested-by: Platform Bot <platform-bot@eclipse.org>
5 files changed
tree: 65a9d719863fcfd562dcffe9138f5c51f36ac2de
  1. .mvn/
  2. bundles/
  3. features/
  4. tests/
  5. .gitignore
  6. CONTRIBUTING
  7. CONTRIBUTING.md
  8. Jenkinsfile
  9. LICENSE
  10. NOTICE
  11. pom.xml
  12. README.md
README.md

Contributing to Eclipse Platform runtime project

Thanks for your interest in this project.

Project description:

Platform runtime provides the background componentns for Eclipse based applications.

Website: https://projects.eclipse.org/projects/eclipse.platform

For more information, refer to the Platform UI wiki page.

How to contribute:

Contributions to Platform UI are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes. For a complete guide, see the Platform UI - How to contribute wiki page page on the team wiki.

Test dependencies

Several test plug-ins have a dependency to the Mockito and Hamcrest library. Please install them from the Orbit Download page

Currently the following versions are required:

  • org.hamcrest;bundle-version=“1.3.0”,
  • org.mockito;bundle-version=“2.13”,

How to build on the command line

You need Maven 3.3.1 installed. After this you can run the build via the following command:

mvn clean verify -Pbuild-individual-bundles

Developer resources:

Information regarding source code management, builds, coding standards, and more.

Contributor License Agreement:

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).

Search for bugs:

This project uses Bugzilla to track ongoing development and issues.

Create a new bug:

Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!

Contact:

Contact the project developers via the project's “dev” list.

License

Eclipse Public License (EPL) 2.0