Optimize readQNameSet() 09/82409/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 4 Jun 2019 17:54:22 +0000 (19:54 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 5 Jun 2019 08:10:38 +0000 (08:10 +0000)
We are providing a bad hint to HashSet, as we are not taking
into consideration its load factor. Use utility methods from Guava
to get a properly-sized set.

JIRA: CONTROLLER-1898
Change-Id: I568be3040b924a8ed77aa0224ab45673104c4664
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 11666b718f70c7846cd64ebf949a4e91d84e0e65)

opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumNormalizedNodeInputStreamReader.java

index 6303420b3f5f0de52877abea6647ed4457809951..573e4ed2faf3f131bbaf6729a1197e94c70f936d 100755 (executable)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList.Builder;
+import com.google.common.collect.Sets;
 import java.io.DataInput;
 import java.io.IOException;
 import java.io.StringReader;
@@ -241,8 +242,8 @@ class LithiumNormalizedNodeInputStreamReader extends ForwardingDataInput impleme
 
     private Set<QName> readQNameSet() throws IOException {
         // Read the children count
-        int count = input.readInt();
-        Set<QName> children = new HashSet<>(count);
+        final int count = input.readInt();
+        final Set<QName> children = Sets.newHashSetWithExpectedSize(count);
         for (int i = 0; i < count; i++) {
             children.add(readQName());
         }