43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
|
#!/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?
|