From: Robert Varga Date: Fri, 17 Apr 2020 19:37:28 +0000 (+0200) Subject: Improve grouping sort allocation X-Git-Tag: v4.0.14~5 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=78e0b7036708f8c9cfd4085122cf914eddc8c92a;hp=ddf8558c1454d317aec50915cbb4559a6eb1d305;p=mdsal.git Improve grouping sort allocation Pre-allocating the result list saves us the common case when the input is actually empty. Change-Id: I237a75db38e8e0c160b204875bc5824433e9c3dc Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java index c7aa607bb5..770734dcb3 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java @@ -51,9 +51,8 @@ public class GroupingDefinitionDependencySort { throw new IllegalArgumentException("Set of Type Definitions cannot be NULL!"); } - final List resultGroupingDefinitions = new ArrayList<>(); - final Set unsorted = groupingDefinitionsToNodes(groupingDefinitions); - final List sortedNodes = TopologicalSort.sort(unsorted); + final List sortedNodes = TopologicalSort.sort(groupingDefinitionsToNodes(groupingDefinitions)); + final List 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 nodeTo). 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 groupingDefinitionsToNodes(final Collection groupingDefinitions) {