optimize toolbox.py:sort_counter_by_dependency_level
Depending on the setup, sort_counter_by_dependency_level can take a very long time (2.5s on bm16) because it can call CounterController.counters thousands of times.
Tested the following on bm16, a simple ct(0.1) went from 4.5s to 2.3s:
def sort_counter_by_dependency_level(counters):
cnt_dict = {cnt: cnt._counter_controller.counters
for cnt in counters}
def cmp_sort2(cnt1, cnt2):
cnt1_cntrs = cnt_dict[cnt1]
cnt2_cntrs = cnt_dict[cnt2]
if cnt1 in cnt2_cntrs:
return -1
elif cnt2 in cnt1_cntrs:
return 1
else:
return len(cnt1_cntrs) - len(cnt2_cntrs)
Edited by Cyril Guilloud