From: Robert Varga Date: Fri, 12 Jun 2015 01:09:13 +0000 (+0200) Subject: Use sizeHints in ImmutableNode builders X-Git-Tag: release/beryllium~417 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=2834c979184db1ffcaea23c6e3db252e4343fc8a;p=yangtools.git Use sizeHints in ImmutableNode builders Instead of ignoring the size hint, use it. Change-Id: I516fbb2a8c18bb6276b5863292f8b0e956ceb6da Signed-off-by: Robert Varga (cherry picked from commit 43a86587a3fa6402a4eee19ecffb119b178994f5) --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java index 02e6a44443..aa249bbcdd 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java @@ -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(DEFAULT_CAPACITY); + if (sizeHint >= 0) { + this.value = Maps.newHashMapWithExpectedSize(sizeHint); + } else { + this.value = new HashMap<>(DEFAULT_CAPACITY); + } this.dirty = false; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java index 31fc2270c9..2c5e3ba596 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java @@ -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 implements ListNodeBuilder(sizeHint * 4 / 3); + if (sizeHint >= 0) { + value = Maps.newHashMapWithExpectedSize(sizeHint); + } else { + value = new HashMap<>(DEFAULT_CAPACITY); + } } protected ImmutableLeafSetNodeBuilder(final ImmutableLeafSetNode node) { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java index dc7b5500c8..dec89f5fc6 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java @@ -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(DEFAULT_CAPACITY); + if (sizeHint >= 0) { + this.value = Maps.newHashMapWithExpectedSize(sizeHint); + } else { + this.value = new HashMap<>(DEFAULT_CAPACITY); + } } protected ImmutableMapNodeBuilder(final ImmutableMapNode node) { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java index f2d64dc16d..ec994bcc56 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java @@ -36,7 +36,11 @@ public class ImmutableOrderedMapNodeBuilder implements CollectionNodeBuilder(DEFAULT_CAPACITY); + if (sizeHint >= 0) { + this.value = new LinkedHashMap<>(sizeHint + sizeHint / 3); + } else { + this.value = new LinkedHashMap<>(DEFAULT_CAPACITY); + } this.dirty = false; }