Do not format QNames to string on input 93/82493/3 stable/fluorine
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 28 May 2019 11:14:34 +0000 (13:14 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 13 Aug 2019 16:29:38 +0000 (16:29 +0000)
commitf3b45b2d577fa6d607cda0ffc350813f57a7f5d1
treeecb4d39a05b3dbb95cdb0051fd5a8ee09f08c4ff
parenta2d5974fb01b623d237319086ca402259cbcd09d
Do not format QNames to string on input

Profiling has revelead the creation of String for QNameFactory
lookup is taking around 19% of overall cost of
NormalizedNodeInputStreamReader.readQName().

Rather than using concatenation, use a dedicated Key object, which
holds the separated-out localname/namespace/revision strings,
thus allocating a small object instead of a full-blown String.

This improves snapshot deserialization perfomance on a 350MiB
snapshot by about 16%, also resulting in lower memory pressure.

JIRA: CONTROLLER-1897
Change-Id: If3e9e4b332b0a5acbe33aa10fca189bbc7da8c81
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit a69604185f71923bdfc16d2d056490fff9a8d90e)
(cherry picked from commit 29ceb5385e45275a8125b73b1a2e5b9d0e369c02)
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactory.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactoryTest.java