Use sizeHints in ImmutableNode builders 02/22602/1
authorRobert Varga <rovarga@cisco.com>
Fri, 12 Jun 2015 01:09:13 +0000 (03:09 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Mon, 15 Jun 2015 14:28:48 +0000 (16:28 +0200)
Instead of ignoring the size hint, use it.

Change-Id: I516fbb2a8c18bb6276b5863292f8b0e956ceb6da
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit 43a86587a3fa6402a4eee19ecffb119b178994f5)

yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java

index 02e6a44443989208898c2e3ec311bd64769c47d4..aa249bbcdde38354b1438793a9a49863f27ff595 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl;
 
+import com.google.common.collect.Maps;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -38,7 +39,11 @@ abstract class AbstractImmutableDataContainerNodeBuilder<I extends YangInstanceI
     }
 
     protected AbstractImmutableDataContainerNodeBuilder(final int sizeHint) {
-        this.value = new HashMap<>(DEFAULT_CAPACITY);
+        if (sizeHint >= 0) {
+            this.value = Maps.newHashMapWithExpectedSize(sizeHint);
+        } else {
+            this.value = new HashMap<>(DEFAULT_CAPACITY);
+        }
         this.dirty = false;
     }
 
index 31fc2270c9f4185f7f4ec0f992e0d5e263806815..2c5e3ba596b522eac8d1393e567660f815c3c9e9 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.Maps;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -36,7 +37,11 @@ public class ImmutableLeafSetNodeBuilder<T> implements ListNodeBuilder<T, LeafSe
     }
 
     protected ImmutableLeafSetNodeBuilder(final int sizeHint) {
-        value = new HashMap<>(sizeHint * 4 / 3);
+        if (sizeHint >= 0) {
+            value = Maps.newHashMapWithExpectedSize(sizeHint);
+        } else {
+            value = new HashMap<>(DEFAULT_CAPACITY);
+        }
     }
 
     protected ImmutableLeafSetNodeBuilder(final ImmutableLeafSetNode<T> node) {
index dc7b5500c8e514ce3e3644acbdbec388222018b1..dec89f5fc6cd03908b0cb2aa04f196fdaafa47e6 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.Maps;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +34,11 @@ public class ImmutableMapNodeBuilder implements CollectionNodeBuilder<MapEntryNo
     }
 
     protected ImmutableMapNodeBuilder(final int sizeHint) {
-        this.value = new HashMap<>(DEFAULT_CAPACITY);
+        if (sizeHint >= 0) {
+            this.value = Maps.newHashMapWithExpectedSize(sizeHint);
+        } else {
+            this.value = new HashMap<>(DEFAULT_CAPACITY);
+        }
     }
 
     protected ImmutableMapNodeBuilder(final ImmutableMapNode node) {
index f2d64dc16d6ce4674215e03b914d7745c1574911..ec994bcc56158384a54c85b0ec5a76288be1c486 100644 (file)
@@ -36,7 +36,11 @@ public class ImmutableOrderedMapNodeBuilder implements CollectionNodeBuilder<Map
     }
 
     protected ImmutableOrderedMapNodeBuilder(final int sizeHint) {
-        this.value = new LinkedHashMap<>(DEFAULT_CAPACITY);
+        if (sizeHint >= 0) {
+            this.value = new LinkedHashMap<>(sizeHint + sizeHint / 3);
+        } else {
+            this.value = new LinkedHashMap<>(DEFAULT_CAPACITY);
+        }
         this.dirty = false;
     }