comparison mercurial/lsprof.py @ 43077:687b865b95ad

formatting: byteify all mercurial/ and hgext/ string literals Done with python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py') black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**') # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6972
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:48:39 -0400
parents 2372284d9457
children c59eb1560c44
comparison
equal deleted inserted replaced
43076:2372284d9457 43077:687b865b95ad
6 Profiler = _lsprof.Profiler 6 Profiler = _lsprof.Profiler
7 7
8 # PyPy doesn't expose profiler_entry from the module. 8 # PyPy doesn't expose profiler_entry from the module.
9 profiler_entry = getattr(_lsprof, 'profiler_entry', None) 9 profiler_entry = getattr(_lsprof, 'profiler_entry', None)
10 10
11 __all__ = ['profile', 'Stats'] 11 __all__ = [b'profile', b'Stats']
12 12
13 13
14 def profile(f, *args, **kwds): 14 def profile(f, *args, **kwds):
15 """XXX docstring""" 15 """XXX docstring"""
16 p = Profiler() 16 p = Profiler()
31 def sort(self, crit=r"inlinetime"): 31 def sort(self, crit=r"inlinetime"):
32 """XXX docstring""" 32 """XXX docstring"""
33 # profiler_entries isn't defined when running under PyPy. 33 # profiler_entries isn't defined when running under PyPy.
34 if profiler_entry: 34 if profiler_entry:
35 if crit not in profiler_entry.__dict__: 35 if crit not in profiler_entry.__dict__:
36 raise ValueError("Can't sort by %s" % crit) 36 raise ValueError(b"Can't sort by %s" % crit)
37 elif self.data and not getattr(self.data[0], crit, None): 37 elif self.data and not getattr(self.data[0], crit, None):
38 raise ValueError("Can't sort by %s" % crit) 38 raise ValueError(b"Can't sort by %s" % crit)
39 39
40 self.data.sort(key=lambda x: getattr(x, crit), reverse=True) 40 self.data.sort(key=lambda x: getattr(x, crit), reverse=True)
41 for e in self.data: 41 for e in self.data:
42 if e.calls: 42 if e.calls:
43 e.calls.sort(key=lambda x: getattr(x, crit), reverse=True) 43 e.calls.sort(key=lambda x: getattr(x, crit), reverse=True)
47 if file is None: 47 if file is None:
48 file = sys.stdout 48 file = sys.stdout
49 d = self.data 49 d = self.data
50 if top is not None: 50 if top is not None:
51 d = d[:top] 51 d = d[:top]
52 cols = "% 12d %12d %11.4f %11.4f %s\n" 52 cols = b"% 12d %12d %11.4f %11.4f %s\n"
53 hcols = "% 12s %12s %12s %12s %s\n" 53 hcols = b"% 12s %12s %12s %12s %s\n"
54 file.write( 54 file.write(
55 hcols 55 hcols
56 % ( 56 % (
57 "CallCount", 57 b"CallCount",
58 "Recursive", 58 b"Recursive",
59 "Total(s)", 59 b"Total(s)",
60 "Inline(s)", 60 b"Inline(s)",
61 "module:lineno(function)", 61 b"module:lineno(function)",
62 ) 62 )
63 ) 63 )
64 count = 0 64 count = 0
65 for e in d: 65 for e in d:
66 file.write( 66 file.write(
84 % ( 84 % (
85 se.callcount, 85 se.callcount,
86 se.reccallcount, 86 se.reccallcount,
87 se.totaltime, 87 se.totaltime,
88 se.inlinetime, 88 se.inlinetime,
89 " %s" % label(se.code), 89 b" %s" % label(se.code),
90 ) 90 )
91 ) 91 )
92 count += 1 92 count += 1
93 ccount += 1 93 ccount += 1
94 if limit is not None and count == limit: 94 if limit is not None and count == limit:
145 if __name__ == '__main__': 145 if __name__ == '__main__':
146 import os 146 import os
147 147
148 sys.argv = sys.argv[1:] 148 sys.argv = sys.argv[1:]
149 if not sys.argv: 149 if not sys.argv:
150 print("usage: lsprof.py <script> <arguments...>", file=sys.stderr) 150 print(b"usage: lsprof.py <script> <arguments...>", file=sys.stderr)
151 sys.exit(2) 151 sys.exit(2)
152 sys.path.insert(0, os.path.abspath(os.path.dirname(sys.argv[0]))) 152 sys.path.insert(0, os.path.abspath(os.path.dirname(sys.argv[0])))
153 stats = profile(execfile, sys.argv[0], globals(), locals()) 153 stats = profile(execfile, sys.argv[0], globals(), locals())
154 stats.sort() 154 stats.sort()
155 stats.pprint() 155 stats.pprint()