equal
deleted
inserted
replaced
10 of the GNU General Public License, incorporated herein by reference. |
10 of the GNU General Public License, incorporated herein by reference. |
11 """ |
11 """ |
12 |
12 |
13 from __future__ import absolute_import |
13 from __future__ import absolute_import |
14 |
14 |
|
15 from . import ( |
|
16 pycompat, |
|
17 ) |
|
18 |
15 def label(code): |
19 def label(code): |
16 if isinstance(code, str): |
20 if isinstance(code, str): |
17 return '~' + code # built-in functions ('~' sorts at the end) |
21 # built-in functions ('~' sorts at the end) |
|
22 return '~' + pycompat.sysbytes(code) |
18 else: |
23 else: |
19 return '%s %s:%d' % (code.co_name, |
24 return '%s %s:%d' % (pycompat.sysbytes(code.co_name), |
20 code.co_filename, |
25 pycompat.sysbytes(code.co_filename), |
21 code.co_firstlineno) |
26 code.co_firstlineno) |
22 |
27 |
23 class KCacheGrind(object): |
28 class KCacheGrind(object): |
24 def __init__(self, profiler): |
29 def __init__(self, profiler): |
25 self.data = profiler.getstats() |
30 self.data = profiler.getstats() |
44 |
49 |
45 code = entry.code |
50 code = entry.code |
46 if isinstance(code, str): |
51 if isinstance(code, str): |
47 out_file.write(b'fi=~\n') |
52 out_file.write(b'fi=~\n') |
48 else: |
53 else: |
49 out_file.write(b'fi=%s\n' % code.co_filename) |
54 out_file.write(b'fi=%s\n' % pycompat.sysbytes(code.co_filename)) |
50 |
55 |
51 out_file.write(b'fn=%s\n' % label(code)) |
56 out_file.write(b'fn=%s\n' % label(code)) |
52 |
57 |
53 inlinetime = int(entry.inlinetime * 1000) |
58 inlinetime = int(entry.inlinetime * 1000) |
54 if isinstance(code, str): |
59 if isinstance(code, str): |
78 out_file.write(b'cfn=%s\n' % label(code)) |
83 out_file.write(b'cfn=%s\n' % label(code)) |
79 if isinstance(code, str): |
84 if isinstance(code, str): |
80 out_file.write(b'cfi=~\n') |
85 out_file.write(b'cfi=~\n') |
81 out_file.write(b'calls=%d 0\n' % subentry.callcount) |
86 out_file.write(b'calls=%d 0\n' % subentry.callcount) |
82 else: |
87 else: |
83 out_file.write(b'cfi=%s\n' % code.co_filename) |
88 out_file.write(b'cfi=%s\n' % pycompat.sysbytes(code.co_filename)) |
84 out_file.write(b'calls=%d %d\n' % ( |
89 out_file.write(b'calls=%d %d\n' % ( |
85 subentry.callcount, code.co_firstlineno)) |
90 subentry.callcount, code.co_firstlineno)) |
86 |
91 |
87 totaltime = int(subentry.totaltime * 1000) |
92 totaltime = int(subentry.totaltime * 1000) |
88 out_file.write(b'%d %d\n' % (lineno, totaltime)) |
93 out_file.write(b'%d %d\n' % (lineno, totaltime)) |