Klaas van Schelven committed 15a4ead

Performance fix of dependency analysis by pushing SortedSets down

Given that each call to _dfs may return a list, and the elements
of those lists may occur multiple times, concatenating the various
lists without removing double elements may lead to very quickly
growing return values.

I've pushed the call to SortedSets()guaranteeing uniqueness of the
elements, down into the method _dfs.

This puts an upper bound to the lenght of the returned value from
_dfs, namely the total amount of available migrations.

This commit is a direct follow-up to #afaeac96a1fb
Again, no tests to demonstrate the existing problem were created,
but the old tests still run (and more quickly so).

  • Participants
  • Parent commits 463114d

Comments (0)

Files changed (1)

File south/migration/

+    results = list(SortedSet(results))
     dependency_cache[(start, get_children)] = results
     return results
     return _dfs(start, get_children, [])
 def depends(start, get_children):
-    result = SortedSet(reversed(list(dfs(start, get_children))))
-    return list(result)
+    return reversed(dfs(start, get_children))