71f3be3bee
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>
49 lines
1.1 KiB
Python
Executable file
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?
|