![](https://secure.gravatar.com/avatar/0345f6261d6ced21145afdec166fd114.jpg?s=120&d=mm&r=g)
On a large flat system (automatically generated by XCVB from QRes), TRAVERSE takes a whole lot of time. More like O(n^2) or O(n^3) than either O(n) or O(n log n). I suspect suboptimal algorithms are used somewhere, either in component lookup or in topological sorting. Sigh. The amount of memory consed suggests it's not just lookup time, but hugely inefficient intermediate data structures. (time (length (asdf::traverse (make-instance 'asdf:load-op) (asdf:find-system :qres-ccl-xne))) ==> took 140,642,274 microseconds (140.642270 seconds) to run with 8 available CPU cores. During that period, 140,484,780 microseconds (140.484790 seconds) were spent in user mode 148,010 microseconds (0.148010 seconds) were spent in system mode 996,129 microseconds (0.996129 seconds) was spent in GC. 8,182,948,112 bytes of memory allocated. 2748 [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Economic illiteracy often leads one to take for wealth creation or cost reduction what is only a forced displacement of activity, with no primary gain, and a lot of secondary costs and negative side-effects. — Faré