#!/usr/bin/python # # Find the top 100 functions that are repeated in multiple .o files, so we can out-of-line those # # import subprocess from collections import defaultdict # the odd bash construction here is because some of the .o files returned by find are not object files # and I don't want xargs to stop when it hits an error a = subprocess.Popen("find instdir/program/ -name *.so | xargs echo nm --radix=d --size-sort --demangle | bash", stdout=subprocess.PIPE, shell=True) #xargs sh -c "somecommand || true" nameDict = defaultdict(int) with a.stdout as txt: for line in txt: line = line.strip() idx1 = line.find(" ") idx2 = line.find(" ", idx1 + 1) name = line[idx2:] nameDict[name] += 1 sizeDict = defaultdict(set) for k, v in nameDict.iteritems(): sizeDict[v].add(k) cnt = 0 for k in sorted(list(sizeDict), reverse=True): print k for v in sizeDict[k]: print v cnt += 1 if cnt > 100 : break #first = sorted(list(sizeDict))[-1] #print first #include/vcl/ITiledRenderable.hxx # why is gaLOKPointerMap declared inside this header?