1 |
On 23 Nov 2015 07:07, Mike Frysinger wrote: |
2 |
> When things get slow, this option helps narrow down where things |
3 |
> are getting hung up. |
4 |
|
5 |
example output (although not as interesting since it's not a full run): |
6 |
$ ./bin/catalyst.git --profile |
7 |
usage: catalyst [-h] [-V] [-d] [-v] |
8 |
[--log-level {critical,error,warning,notice,info,debug}] |
9 |
[--log-file LOG_FILE] [--color] [--nocolor] [--trace] |
10 |
[--profile] [-a] [-p] [-P] [-T] [-F] [-c CONFIGS] [-f FILE] |
11 |
[-s SNAPSHOT] [-C ...] |
12 |
catalyst: error: please specify one of either -f or -C or -s |
13 |
|
14 |
2133 function calls (2090 primitive calls) in 0.002 seconds |
15 |
|
16 |
Ordered by: internal time |
17 |
|
18 |
ncalls tottime percall cumtime percall filename:lineno(function) |
19 |
6 0.000 0.000 0.001 0.000 argparse.py:384(_format_actions_usage) |
20 |
10/7 0.000 0.000 0.000 0.000 sre_parse.py:395(_parse) |
21 |
4 0.000 0.000 0.000 0.000 argparse.py:336(get_lines) |
22 |
25 0.000 0.000 0.000 0.000 {method 'sub' of '_sre.SRE_Pattern' objects} |
23 |
18/5 0.000 0.000 0.000 0.000 sre_compile.py:64(_compile) |
24 |
30 0.000 0.000 0.001 0.000 re.py:230(_compile) |
25 |
3 0.000 0.000 0.000 0.000 gettext.py:424(find) |
26 |
73 0.000 0.000 0.000 0.000 sre_parse.py:193(__next) |
27 |
25/12 0.000 0.000 0.000 0.000 sre_parse.py:151(getwidth) |
28 |
2 0.000 0.000 0.002 0.001 argparse.py:292(_format_usage) |
29 |
6 0.000 0.000 0.000 0.000 gettext.py:132(_expand_lang) |
30 |
430 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} |
31 |
5 0.000 0.000 0.000 0.000 sre_compile.py:433(_compile_info) |
32 |
67 0.000 0.000 0.000 0.000 sre_parse.py:141(__getitem__) |
33 |
12 0.000 0.000 0.000 0.000 posixpath.py:61(join) |
34 |
399/388 0.000 0.000 0.000 0.000 {len} |
35 |
113 0.000 0.000 0.000 0.000 {isinstance} |
36 |
6 0.000 0.000 0.000 0.000 sre_compile.py:256(_optimize_charset) |
37 |
24 0.000 0.000 0.000 0.000 argparse.py:573(_format_args) |
38 |
12 0.000 0.000 0.000 0.000 {posix.stat} |
39 |
57 0.000 0.000 0.000 0.000 sre_parse.py:212(get) |
40 |
12 0.000 0.000 0.000 0.000 genericpath.py:23(exists) |
41 |
24 0.000 0.000 0.000 0.000 argparse.py:557(_metavar_formatter) |
42 |
8/5 0.000 0.000 0.000 0.000 sre_parse.py:317(_parse_sub) |
43 |
61 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects} |
44 |
4 0.000 0.000 0.000 0.000 {method 'findall' of '_sre.SRE_Pattern' objects} |
45 |
3 0.000 0.000 0.000 0.000 sre_parse.py:734(parse_template) |
46 |
5 0.000 0.000 0.000 0.000 sre_parse.py:706(parse) |
47 |
24 0.000 0.000 0.001 0.000 re.py:148(sub) |
48 |
5 0.000 0.000 0.001 0.000 sre_compile.py:567(compile) |
49 |
18 0.000 0.000 0.000 0.000 re.py:264(_compile_repl) |
50 |
6 0.000 0.000 0.000 0.000 sre_compile.py:228(_compile_charset) |
51 |
2 0.000 0.000 0.000 0.000 {method 'write' of 'file' objects} |
52 |
1 0.000 0.000 0.000 0.000 log.py:105(setup_logging) |
53 |
38 0.000 0.000 0.000 0.000 sre_parse.py:137(__len__) |
54 |
6 0.000 0.000 0.000 0.000 locale.py:363(normalize) |
55 |
6 0.000 0.000 0.000 0.000 {sorted} |
56 |
5 0.000 0.000 0.000 0.000 sre_compile.py:552(_code) |
57 |
1 0.000 0.000 0.000 0.000 argparse.py:154(__init__) |
58 |
20 0.000 0.000 0.000 0.000 argparse.py:566(format) |
59 |
40 0.000 0.000 0.000 0.000 sre_parse.py:206(match) |
60 |
18 0.000 0.000 0.000 0.000 sre_parse.py:92(__init__) |
61 |
18 0.000 0.000 0.000 0.000 re.py:284(_subx) |
62 |
1 0.000 0.000 0.002 0.002 argparse.py:205(format_help) |
63 |
40 0.000 0.000 0.000 0.000 {min} |
64 |
7 0.000 0.000 0.000 0.000 sre_compile.py:428(_simple) |
65 |
1 0.000 0.000 0.002 0.002 main.py:281(_main) |
66 |
1 0.000 0.000 0.000 0.000 {time.localtime} |
67 |
29 0.000 0.000 0.000 0.000 {method 'join' of 'str' objects} |
68 |
3 0.000 0.000 0.000 0.000 gettext.py:530(dgettext) |
69 |
12 0.000 0.000 0.000 0.000 UserDict.py:58(get) |
70 |
26 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects} |
71 |
3 0.000 0.000 0.000 0.000 locale.py:347(_replace_encoding) |
72 |
3 0.000 0.000 0.000 0.000 gettext.py:464(translation) |
73 |
7 0.000 0.000 0.000 0.000 sre_parse.py:268(_escape) |
74 |
4 0.000 0.000 0.000 0.000 re.py:173(findall) |
75 |
25 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects} |
76 |
10 0.000 0.000 0.000 0.000 sre_compile.py:546(isstring) |
77 |
4 0.000 0.000 0.000 0.000 sre_parse.py:236(_class_escape) |
78 |
1 0.000 0.000 0.000 0.000 {time.strftime} |
79 |
21 0.000 0.000 0.000 0.000 sre_parse.py:149(append) |
80 |
1 0.000 0.000 0.000 0.000 __init__.py:644(_addHandlerRef) |
81 |
18 0.000 0.000 0.000 0.000 {method 'find' of 'str' objects} |
82 |
3 0.000 0.000 0.000 0.000 __init__.py:49(normalize_encoding) |
83 |
9 0.000 0.000 0.000 0.000 {method 'split' of 'str' objects} |
84 |
5 0.000 0.000 0.000 0.000 {_sre.compile} |
85 |
2 0.000 0.000 0.000 0.000 threading.py:147(acquire) |
86 |
8 0.000 0.000 0.000 0.000 sre_parse.py:189(__init__) |
87 |
36 0.000 0.000 0.000 0.000 {method 'endswith' of 'str' objects} |
88 |
36 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects} |
89 |
3 0.000 0.000 0.000 0.000 sre_parse.py:85(closegroup) |
90 |
1 0.000 0.000 0.000 0.000 log.py:81(__init__) |
91 |
3 0.000 0.000 0.000 0.000 gettext.py:568(gettext) |
92 |
1 0.000 0.000 0.000 0.000 __init__.py:154(getLevelName) |
93 |
1 0.000 0.000 0.000 0.000 __init__.py:825(__init__) |
94 |
9 0.000 0.000 0.000 0.000 {method 'translate' of 'str' objects} |
95 |
12 0.000 0.000 0.000 0.000 UserDict.py:70(__contains__) |
96 |
1 0.000 0.000 0.002 0.002 argparse.py:2364(error) |
97 |
2 0.000 0.000 0.000 0.000 __init__.py:183(_checkLevel) |
98 |
1 0.000 0.000 0.000 0.000 argparse.py:250(add_usage) |
99 |
1 0.000 0.000 0.000 0.000 log.py:74(detect_color) |
100 |
5 0.000 0.000 0.000 0.000 sre_parse.py:67(__init__) |
101 |
1 0.000 0.000 0.000 0.000 threading.py:132(__init__) |
102 |
7 0.000 0.000 0.000 0.000 {method 'strip' of 'str' objects} |
103 |
1 0.000 0.000 0.000 0.000 argparse.py:2326(_get_formatter) |
104 |
4 0.000 0.000 0.000 0.000 UserDict.py:18(__getitem__) |
105 |
2 0.000 0.000 0.000 0.000 argparse.py:2350(_print_message) |
106 |
1 0.000 0.000 0.000 0.000 __init__.py:663(__init__) |
107 |
1 0.000 0.000 0.002 0.002 argparse.py:2332(print_usage) |
108 |
4 0.000 0.000 0.000 0.000 {hasattr} |
109 |
1 0.000 0.000 0.000 0.000 __init__.py:692(createLock) |
110 |
2 0.000 0.000 0.000 0.000 threading.py:187(release) |
111 |
2 0.000 0.000 0.000 0.000 re.py:192(compile) |
112 |
1 0.000 0.000 0.002 0.002 argparse.py:2287(format_usage) |
113 |
3 0.000 0.000 0.000 0.000 sre_parse.py:74(opengroup) |
114 |
2 0.000 0.000 0.000 0.000 argparse.py:287(_join_parts) |
115 |
6 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects} |
116 |
18 0.000 0.000 0.000 0.000 {ord} |
117 |
1 0.000 0.000 0.002 0.002 argparse.py:280(format_help) |
118 |
3 0.000 0.000 0.000 0.000 {method 'index' of 'str' objects} |
119 |
2 0.000 0.000 0.000 0.000 {method 'acquire' of 'thread.lock' objects} |
120 |
1 0.000 0.000 0.000 0.000 {posix.isatty} |
121 |
6 0.000 0.000 0.000 0.000 {method 'reverse' of 'list' objects} |
122 |
1 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects} |
123 |
1 0.000 0.000 0.000 0.000 argparse.py:199(__init__) |
124 |
6 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects} |
125 |
1 0.000 0.000 0.000 0.000 threading.py:114(RLock) |
126 |
2 0.000 0.000 0.000 0.000 __init__.py:220(_releaseLock) |
127 |
4 0.000 0.000 0.000 0.000 {max} |
128 |
1 0.000 0.000 0.000 0.000 __init__.py:585(__init__) |
129 |
7 0.000 0.000 0.000 0.000 sre_parse.py:145(__setitem__) |
130 |
1 0.000 0.000 0.000 0.000 __init__.py:1137(setLevel) |
131 |
1 0.000 0.000 0.000 0.000 argparse.py:2359(exit) |
132 |
1 0.000 0.000 0.000 0.000 {sys.exit} |
133 |
1 0.000 0.000 0.000 0.000 __init__.py:397(__init__) |
134 |
2 0.000 0.000 0.000 0.000 {method 'release' of 'thread.lock' objects} |
135 |
1 0.000 0.000 0.000 0.000 __init__.py:762(setFormatter) |
136 |
2 0.000 0.000 0.000 0.000 __init__.py:211(_acquireLock) |
137 |
1 0.000 0.000 0.000 0.000 __init__.py:1296(addHandler) |
138 |
6 0.000 0.000 0.000 0.000 {range} |
139 |
1 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects} |
140 |
4 0.000 0.000 0.000 0.000 {thread.get_ident} |
141 |
5 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects} |
142 |
1 0.000 0.000 0.000 0.000 argparse.py:230(_add_item) |
143 |
1 0.000 0.000 0.000 0.000 {thread.allocate_lock} |
144 |
3 0.000 0.000 0.000 0.000 {method 'remove' of 'list' objects} |
145 |
1 0.000 0.000 0.000 0.000 threading.py:80(__init__) |
146 |
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} |
147 |
-mike |