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