From 2834c979184db1ffcaea23c6e3db252e4343fc8a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 12 Jun 2015 03:09:13 +0200 Subject: [PATCH] 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) --- .../impl/AbstractImmutableDataContainerNodeBuilder.java | 7 ++++++- .../schema/builder/impl/ImmutableLeafSetNodeBuilder.java | 7 ++++++- .../impl/schema/builder/impl/ImmutableMapNodeBuilder.java | 7 ++++++- .../builder/impl/ImmutableOrderedMapNodeBuilder.java | 6 +++++- 4 files changed, 23 insertions(+), 4 deletions(-) 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; } -- 2.36.6