From: Robert Varga Date: Tue, 25 Oct 2016 17:11:40 +0000 (+0200) Subject: BUG-6522: do not accidentally grow lists X-Git-Tag: release/carbon~295 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=ba266efd6a8ebf1a853d7dcc6543991205bcf2db;p=yangtools.git BUG-6522: do not accidentally grow lists If we end up with an empty collection being passed in, do not do any processing so we do not inflate lists unnecessarily. In profiling this showed to waste as much as 23MiB of memory. Change-Id: Ibb47953894162e6658f473ca763f17b8a98d2cb2 Signed-off-by: Robert Varga --- diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index f9247a4753..45bf701a1a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -128,6 +128,10 @@ public abstract class StatementContextBase, E @Override public void addAsEffectOfStatement(final Collection> ctxs) { + if (ctxs.isEmpty()) { + return; + } + if (effectOfStatement.isEmpty()) { effectOfStatement = new ArrayList<>(ctxs.size()); } @@ -319,6 +323,10 @@ public abstract class StatementContextBase, E * if statement parameter is null */ public void addEffectiveSubstatements(final Collection> substatements) { + if (substatements.isEmpty()) { + return; + } + substatements.forEach(Preconditions::checkNotNull); beforeAddEffectiveStatement(substatements.size()); effective.addAll(substatements);