From: Robert Varga Date: Fri, 16 Nov 2018 06:51:27 +0000 (+0100) Subject: Switch on method names X-Git-Tag: release/oxygen-sr4~4 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F77888%2F2;p=mdsal.git Switch on method names Method names are guarateed to be interned by the JVM, hence their hashCode is O(1) -- making them a prime target for a switch statement, which side-steps the need to run String.equals() slow path most of the time. JIRA: MDSAL-398 Change-Id: Ie57c2f9fd8c3757ec08e1be945b08d66ebbcff4e Signed-off-by: Robert Varga (cherry picked from commit b4db803c07b50d2f3f7977e0509dbb60724c4b1d) --- diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java index 4b394cd373..0cbd880539 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java @@ -60,22 +60,26 @@ class LazyDataObject implements InvocationHandler, Augment public Object invoke(final Object proxy, final Method method, final Object[] args) { switch (method.getParameterCount()) { case 0: - final String name = method.getName(); - if (DATA_CONTAINER_GET_IMPLEMENTED_INTERFACE_NAME.equals(name)) { - return context.getBindingClass(); - } else if (TO_STRING.equals(name)) { - return bindingToString(); - } else if (HASHCODE.equals(name)) { - return bindingHashCode(); - } else if (AUGMENTATIONS.equals(name)) { - return getAugmentationsImpl(); + switch (method.getName()) { + case DATA_CONTAINER_GET_IMPLEMENTED_INTERFACE_NAME: + return context.getBindingClass(); + case TO_STRING: + return bindingToString(); + case HASHCODE: + return bindingHashCode(); + case AUGMENTATIONS: + return getAugmentationsImpl(); + default: + return getBindingData(method); } - return getBindingData(method); case 1: - if (AUGMENTABLE_GET_AUGMENTATION_NAME.equals(method.getName())) { - return getAugmentationImpl((Class) args[0]); - } else if (EQUALS.equals(method.getName())) { - return bindingEquals(args[0]); + switch (method.getName()) { + case AUGMENTABLE_GET_AUGMENTATION_NAME: + return getAugmentationImpl((Class) args[0]); + case EQUALS: + return bindingEquals(args[0]); + default: + break; } break; default: