Bug 550644 - Remove redundant contains check in
InjectorImpl#processMethods

InjectorImpl#processMethods performs a contains check followed by a get.
As isOverriddenCache does not contain null elements, this check is
redundant.

Some logic applied for isOverriddenCache and methodMap

Manual measurement (see Bug 550208 for missing automatic way of
measuring that) with 5 times started (after two warmups) shows approx.
3.1 % performance improvement.

Old Code:

Application started in : 8919ms
Application started in : 8793ms
Application started in : 8799ms
Application started in : 8581ms
Application started in : 8764ms

Average: 8771,2


With change:
Application started in : 8801ms
Application started in : 8363ms
Application started in : 8246ms
Application started in : 8770ms
Application started in : 8335ms

Average: 8503

Also yourkit shows an improvement of approx. 635ms.


Change-Id: Id5a535899f0b1a7299332c2b5a3c82bd9c3087a5
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
index 44e133b..3d7d239 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
@@ -732,11 +732,9 @@
 			Boolean isOverridden = null;
 			Map<Method, Boolean> methodMap = null;
 			Class<?> originalClass = userObject.getClass();
-			if (isOverriddenCache.containsKey(originalClass)) {
-				methodMap = isOverriddenCache.get(originalClass);
-				if (methodMap.containsKey(method)) {
-					isOverridden = methodMap.get(method);
-				}
+			methodMap = isOverriddenCache.get(originalClass);
+			if (methodMap != null) {
+				isOverridden = methodMap.get(method);
 			}
 			if (isOverridden == null) {
 				isOverridden = isOverridden(method, classHierarchy);