Bug 61995 Removing search matches is slow
I20040512 - 0800 1) Search for declarations of "toString()" in a self-hosting workspace with core projects (or some equivalent search). -> Finding 861 matches takes about 20 seconds. Great 2) Click "Remove all Matches" -> Instantaneous 3) Repeat the search 4) Select every search result but one, and push the delete key -> Deleting 860 matches takes 52 seconds. I did a bit of profiling, but all the time is inside a WindowProc - it looks like table removal is very slow.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/LevelTreeContentProvider.java
viewer.refresh(element);
		} else {
			if (getPage().getDisplayedMatchCount(element) == 0) {
				fChildrenMap.remove(element);
				Object parent= getParent(element);
				if (parent != null) {
					removeFromSiblings(element, parent);
					remove(parent, refreshViewer);
				} else {
					removeFromSiblings(element, fResult);
					if (refreshViewer)
						viewer.refresh();
				}
			} else {
				if (refreshViewer) {
					viewer.refresh(element);
				}
			}
		}
	}
	private void removeFromSiblings(Object element, Object parent) {
		Set siblings= (Set) fChildrenMap.get(parent);
		if (siblings != null) {
			siblings.remove(element);
		}
	}
	public Object[] getChildren(Object parentElement) {
		Set children= (Set) fChildrenMap.get(parentElement);
		if (children == null)
			return EMPTY_ARR;