perf: Micro-optimization

This commit is contained in:
Chris Cameron
2018-07-20 16:50:13 -04:00
parent 74c59bd7f3
commit aeb2a5d91e

View File

@@ -84,18 +84,15 @@ namespace ICD.Common.Utils
/// <returns></returns>
private static IEnumerable<T> GetCliqueIterator<T>(IDictionary<T, IEnumerable<T>> map, IcdHashSet<T> visited, T node)
{
if (visited.Contains(node))
if (!visited.Add(node))
yield break;
if (!map.ContainsKey(node))
IEnumerable<T> adjacent;
if (!map.TryGetValue(node, out adjacent))
yield break;
visited.Add(node);
yield return node;
IEnumerable<T> adjacent = map.GetDefault(node, Enumerable.Empty<T>());
foreach (T item in adjacent.SelectMany(a => GetClique(map, visited, a)))
yield return item;
}