Bug 526010 - Very long check when deleting thousands of sub-packages

When deleting a package with a few thousand sub-packages, a check during
removal takes up to several minutes. This cannot be cancelled by
canceling the delete operation.

This check is done in DeleteModifications.postProcess. The method
iterates over all packages that are to be removed. For each of those
packages, the method will retrieve all sub-packages. For each of those
sub-packages, it checks whether that sub-package is to be removed. This
last check is on an array container. In total, this results in cubic
complexity.

With this change the algorithm which checks whether it can remove a
package completely has linear complexity, instead of quadratic. The
total complexity for deleting the packages is therefore quadratic,
instead of cubic. The check for a few thousand sub-packages then takes a
few seconds instead of minutes.

Change-Id: I097d58bdeaa650f06b38a1ee7bf38bdbc5a21127
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
1 file changed
tree: 15f36ebee11f7c97c4105312ce5d5f66223bb573
  1. org.eclipse.jdt.astview/
  2. org.eclipse.jdt.astview.feature/
  3. org.eclipse.jdt.core.manipulation/
  4. org.eclipse.jdt.jeview/
  5. org.eclipse.jdt.jeview.feature/
  6. org.eclipse.jdt.junit/
  7. org.eclipse.jdt.junit.core/
  8. org.eclipse.jdt.junit.runtime/
  9. org.eclipse.jdt.junit4.runtime/
  10. org.eclipse.jdt.junit5.runtime/
  11. org.eclipse.jdt.text.tests/
  12. org.eclipse.jdt.ui/
  13. org.eclipse.jdt.ui.examples.javafamily/
  14. org.eclipse.jdt.ui.examples.projects/
  15. org.eclipse.jdt.ui.tests/
  16. org.eclipse.jdt.ui.tests.refactoring/
  17. org.eclipse.ltk.core.refactoring/
  18. org.eclipse.ltk.core.refactoring.tests/
  19. org.eclipse.ltk.ui.refactoring/
  20. org.eclipse.ltk.ui.refactoring.tests/
  21. tests-pom/
  22. .gitignore
  23. pom.xml
  24. README.md
README.md

Contributing to JDT UI - Java development tools UI

Thanks for your interest in this project.

Project description:

The JDT UI implements the user interface for the Java IDE. This includes views like Package Explorer and JUnit, the Java and properties files editors, Java search, and refactorings. Website: http://www.eclipse.org/jdt/ui/

How to contribute:

Contributions to JDT 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 [How to Contribute] 1 page on the team wiki.

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).

Forum:

Public forum for Eclipse JDT users.

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) v1.0