| #!/usr/bin/python -O |
| |
| import profile,time,sys,os |
| sys.path = ["/usr/lib/portage/bin","/usr/lib/portage/pym"]+sys.path |
| |
| def clock(): |
| return time.time() |
| profile.time.clock = clock |
| |
| profile.run("import emerge", os.getcwd()+"/prof") |
| |
| class StatsProcesser: |
| def __init__(self, stats): |
| self.output = [] |
| self.last = "" |
| import sys |
| sys.stdout = self |
| stats.print_stats() |
| sys.stdout = sys.__stdout__ |
| funcs = ["?"] |
| for line in self.output: |
| spline = line.split() |
| if len(spline) == 6 and spline[0][0].isdigit(): |
| func = spline[5][spline[5].index("(")+1:-1] |
| print line |
| if func not in funcs: |
| funcs.append(func) |
| func = "\\(" + func + "\\)" |
| stats.print_callers(func) |
| |
| def write(self, text): |
| new = self.last + text |
| new = new.split("\n") |
| if len(new) > 1: |
| self.output += new[:-1] |
| self.last = new[-1] |
| |
| import pstats |
| p = pstats.Stats("prof") |
| dir(p) |
| p.sort_stats("time") |
| p.print_stats() |
| |
| sp = StatsProcesser(p) |