#!/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?