Skip to content

Commit

Permalink
scripts/bloat-o-meter: don't use readlines()
Browse files Browse the repository at this point in the history
readlines() conses whole list before doing anything which is slower for
big object files.  Use per line iterator.

Speed up is ~2% on "allyesconfig" type of kernel.

    $ perf stat -r 16 taskset -c 15 ./scripts/bloat-o-meter ../vmlinux-000 ../obj/vmlinux >/dev/null
	...

  Before:  7.247708646 seconds time elapsed                ( +-  0.28% )
  After:   7.091202853 seconds time elapsed                ( +-  0.15% )

Link: http://lkml.kernel.org/r/20161119004143.GA1200@avx2
Signed-off-by: Alexey Dobriyan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Alexey Dobriyan authored and torvalds committed Dec 13, 2016
1 parent 3fb4afd commit 3af06fd
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions scripts/bloat-o-meter
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,18 @@ if len(sys.argv) != 3:

def getsizes(file):
sym = {}
for l in os.popen("nm --size-sort " + file).readlines():
size, type, name = l[:-1].split()
if type in "tTdDbBrR":
# strip generated symbols
if name.startswith("__mod_"): continue
if name.startswith("SyS_"): continue
if name.startswith("compat_SyS_"): continue
if name == "linux_banner": continue
# statics and some other optimizations adds random .NUMBER
name = re.sub(r'\.[0-9]+', '', name)
sym[name] = sym.get(name, 0) + int(size, 16)
with os.popen("nm --size-sort " + file) as f:
for line in f:
size, type, name = line.split()
if type in "tTdDbBrR":
# strip generated symbols
if name.startswith("__mod_"): continue
if name.startswith("SyS_"): continue
if name.startswith("compat_SyS_"): continue
if name == "linux_banner": continue
# statics and some other optimizations adds random .NUMBER
name = re.sub(r'\.[0-9]+', '', name)
sym[name] = sym.get(name, 0) + int(size, 16)
return sym

old = getsizes(sys.argv[1])
Expand Down

0 comments on commit 3af06fd

Please sign in to comment.