BUG-6522: do not accidentally grow lists 49/47549/5
authorRobert Varga <rovarga@cisco.com>
Tue, 25 Oct 2016 17:11:40 +0000 (19:11 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 26 Oct 2016 08:33:28 +0000 (08:33 +0000)
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 <rovarga@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java

index f9247a475316d882302fe5e2a2931072b784cbcf..45bf701a1aff9086c3e23f4ca0eccdba7da27b11 100644 (file)
@@ -128,6 +128,10 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
 
     @Override
     public void addAsEffectOfStatement(final Collection<StatementContextBase<?, ?, ?>> ctxs) {
+        if (ctxs.isEmpty()) {
+            return;
+        }
+
         if (effectOfStatement.isEmpty()) {
             effectOfStatement = new ArrayList<>(ctxs.size());
         }
@@ -319,6 +323,10 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
      *             if statement parameter is null
      */
     public void addEffectiveSubstatements(final Collection<StatementContextBase<?, ?, ?>> substatements) {
+        if (substatements.isEmpty()) {
+            return;
+        }
+
         substatements.forEach(Preconditions::checkNotNull);
         beforeAddEffectiveStatement(substatements.size());
         effective.addAll(substatements);