Optimize CodecDataObject dispatch 08/81708/8
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 22 Apr 2019 20:47:43 +0000 (22:47 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 24 Apr 2019 13:27:58 +0000 (13:27 +0000)
commit259957ffe47414cc197f4a819361e8a6dcf50b19
treedcd8f79d5b5a1f03c3889a4add122c8b7e19590e
parentefb454b9e1e6869240aebd6489e6219abefec227
Optimize CodecDataObject dispatch

Now that we are in control of our interface between the DataObject
facade and DataObjectCodecContext rather than being forced to work
off of method name, we can optimize the dispatch towards
NodeContextSupplier (and DataObjectCodecContext size) by using
simple offsets to identify which method is being invoked.

On the generated code side of things, this lowers the pressure we
exert on the constant pool by using simple integers instead of
strings.

On the DataObjectCodecContext side, we ditch a Map in favor of a
simple array -- thus lowering memory overhead while also speeding
up dispatch, as it no longer is a Map lookup, but rather straight
get from an offset.

This necessitates special-casing key() method a bit, but the benefits
outweigh the (slight) ugliness we bring in.

JIRA: MDSAL-442
Change-Id: Iaf227e78d2b6546d34c2133fc31912c0a8dde4b3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CodecDataObject.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CodecDataObjectCustomizer.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ListNodeCodecContext.java