office-gobmx/bin/find-most-repeated-functions.py
Leonard Sasse 71f3be3bee tdf#158803 Remove E999: SyntaxError's and some other minor edits
Change-Id: I32d75eb03b1f1fd011dcbc6950bf74800446a422
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165464
Tested-by: Jenkins
Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-05-21 09:59:45 +02:00

49 lines
1.1 KiB
Python
Executable file

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