Improve grouping sort allocation 47/88947/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 17 Apr 2020 19:37:28 +0000 (21:37 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 17 Apr 2020 20:24:31 +0000 (22:24 +0200)
Pre-allocating the result list saves us the common case when
the input is actually empty.

Change-Id: I237a75db38e8e0c160b204875bc5824433e9c3dc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java

index c7aa607bb5cce422f283f1987f27cbb3566a2194..770734dcb39000f14d2753cee7edfea089340528 100644 (file)
@@ -51,9 +51,8 @@ public class GroupingDefinitionDependencySort {
             throw new IllegalArgumentException("Set of Type Definitions cannot be NULL!");
         }
 
-        final List<GroupingDefinition> resultGroupingDefinitions = new ArrayList<>();
-        final Set<Node> unsorted = groupingDefinitionsToNodes(groupingDefinitions);
-        final List<Node> sortedNodes = TopologicalSort.sort(unsorted);
+        final List<Node> sortedNodes = TopologicalSort.sort(groupingDefinitionsToNodes(groupingDefinitions));
+        final List<GroupingDefinition> resultGroupingDefinitions = new ArrayList<>(sortedNodes.size());
         for (Node node : sortedNodes) {
             NodeWrappedType nodeWrappedType = (NodeWrappedType) node;
             resultGroupingDefinitions.add((GroupingDefinition) nodeWrappedType.getWrappedType());
@@ -68,7 +67,7 @@ public class GroupingDefinitionDependencySort {
      * For every uses node is found its wrapping node (next as <i>nodeTo</i>). This dependency relationship between
      * nodeFrom and all found nodesTo is modeled with creating of one edge from nodeFrom to nodeTo.
      *
-     * @param groupingDefinitions set of goruping definition which will be wrapped to nodes
+     * @param groupingDefinitions set of grouping definition which will be wrapped to nodes
      * @return set of nodes where every one contains wrapped grouping definition
      */
     private Set<Node> groupingDefinitionsToNodes(final Collection<GroupingDefinition> groupingDefinitions) {