Optimize readQNameSet() 98/82398/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 4 Jun 2019 17:54:22 +0000 (19:54 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Tue, 4 Jun 2019 22:43:18 +0000 (22:43 +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>
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumNormalizedNodeInputStreamReader.java

index 3b4f2dad05d1170a9cc96fef48b096693e2e5dea..d94503120d8a86e3533341d368c93fe036501dbf 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.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;
 import java.io.DataInput;
 import java.io.IOException;
 import java.io.StringReader;
@@ -240,8 +241,8 @@ class LithiumNormalizedNodeInputStreamReader extends ForwardingDataInput impleme
 
     private Set<QName> readQNameSet() throws IOException {
         // Read the children count
 
     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());
         }
         for (int i = 0; i < count; i++) {
             children.add(readQName());
         }