Filename | /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage |
Statements | Executed 69 statements in 3.38ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
2000 | 1 | 1 | 22.4s | 22.4s | commit (xsub) | DBI::db::
27629 | 1 | 1 | 4.33s | 4.33s | execute (xsub) | DBI::st::
67264 | 26 | 5 | 409ms | 409ms | STORE (xsub) | DBI::common::
31629 | 3 | 1 | 134ms | 289ms | EXISTS (xsub) | DBI::common::
2000 | 2 | 1 | 121ms | 121ms | do (xsub) | DBI::db::
89213 | 12 | 5 | 108ms | 108ms | FETCH (xsub) | DBI::common::
18950 | 8 | 1 | 104ms | 502ms | fetchrow_hashref (xsub) | DBI::st::
27614 | 1 | 1 | 45.3ms | 45.3ms | finish (xsub) | DBI::st::
24600 | 2 | 2 | 39.8ms | 39.8ms | fetch (xsub) | DBI::st::
18950 | 1 | 1 | 19.4ms | 19.4ms | mysql_async_ready (xsub) | DBI::st::
2000 | 1 | 1 | 10.9ms | 22.4ms | bind_col (xsub) | DBI::st::
1000 | 1 | 1 | 9.30ms | 60.9ms | bind_columns (xsub) | DBI::st::
1000 | 1 | 1 | 8.22ms | 121ms | fetchall_arrayref (xsub) | DBI::st::
3015 | 2 | 1 | 3.15ms | 3.15ms | func (xsub) | DBI::common::
1 | 1 | 1 | 2.31ms | 429ms | _connect | main::
1028 | 1 | 1 | 2.02ms | 2.02ms | last_insert_id (xsub) | DBI::db::
1 | 1 | 1 | 1.47ms | 1.50ms | BEGIN@7 | main::
1 | 1 | 1 | 1.43ms | 7.51ms | BEGIN@9 | main::
1 | 1 | 1 | 339µs | 390µs | BEGIN@6 | main::
32 | 1 | 1 | 97µs | 97µs | DESTROY (xsub) | DBI::common::
1 | 1 | 1 | 86µs | 34.4ms | _gc | main::
179 | 3 | 1 | 57µs | 57µs | SvREADONLY (xsub) | Internals::
15 | 1 | 1 | 53µs | 509µs | prepare (xsub) | DBI::db::
1 | 1 | 1 | 50µs | 50µs | BEGIN@5 | main::
2 | 2 | 1 | 30µs | 438ms | _getopt | main::
16 | 1 | 1 | 22µs | 22µs | DESTROY (xsub) | DBD::_mem::common::
1 | 1 | 1 | 16µs | 506µs | setup | main::
1 | 1 | 1 | 16µs | 55µs | teardown | main::
1 | 1 | 1 | 15µs | 20µs | _set_defaults | main::
1 | 1 | 1 | 14µs | 53.5s | processqueue | main::
7 | 7 | 4 | 11µs | 11µs | CORE:pack (opcode) | main::
1 | 1 | 1 | 11µs | 53.0s | _processqueue | main::
1 | 1 | 1 | 10µs | 10µs | disconnect_all (xsub) | DBI::dr::
1 | 1 | 1 | 9µs | 9µs | engine | main::
1 | 1 | 1 | 8µs | 34µs | _disconnect | main::
1 | 1 | 1 | 7µs | 144µs | BEGIN@229 | main::
1 | 1 | 1 | 6µs | 21µs | add | main::
1 | 1 | 1 | 6µs | 1.13ms | connect (xsub) | DBI::dr::
1 | 1 | 1 | 5µs | 82µs | BEGIN@269 | main::
1 | 1 | 1 | 5µs | 96µs | BEGIN@237 | main::
1 | 1 | 1 | 5µs | 80µs | BEGIN@261 | main::
1 | 1 | 1 | 5µs | 82µs | BEGIN@286 | main::
2 | 2 | 1 | 5µs | 5µs | CORE:match (opcode) | main::
1 | 1 | 1 | 5µs | 84µs | BEGIN@245 | main::
1 | 1 | 1 | 5µs | 81µs | BEGIN@295 | main::
1 | 1 | 1 | 5µs | 83µs | BEGIN@304 | main::
1 | 1 | 1 | 4µs | 81µs | BEGIN@312 | main::
1 | 1 | 1 | 4µs | 4µs | (bool (xsub) | version::
1 | 1 | 1 | 4µs | 85µs | BEGIN@253 | main::
1 | 1 | 1 | 4µs | 89µs | BEGIN@277 | main::
1 | 1 | 1 | 2µs | 2µs | (cmp (xsub) | version::
1 | 1 | 1 | 2µs | 2µs | connected (xsub) | DBI::db::
0 | 0 | 0 | 0s | 0s | RUNTIME | main::
0 | 0 | 0 | 0s | 0s | _add | main::
0 | 0 | 0 | 0s | 0s | _createdb | main::
0 | 0 | 0 | 0s | 0s | _init | main::
0 | 0 | 0 | 0s | 0s | _init_search_engine | main::
0 | 0 | 0 | 0s | 0s | _listkeys | main::
0 | 0 | 0 | 0s | 0s | _listnames | main::
0 | 0 | 0 | 0s | 0s | _read_in | main::
0 | 0 | 0 | 0s | 0s | _search | main::
0 | 0 | 0 | 0s | 0s | _stats | main::
0 | 0 | 0 | 0s | 0s | _sync_search_engine | main::
0 | 0 | 0 | 0s | 0s | _write_out | main::
0 | 0 | 0 | 0s | 0s | createdb | main::
0 | 0 | 0 | 0s | 0s | gc | main::
0 | 0 | 0 | 0s | 0s | help | main::
0 | 0 | 0 | 0s | 0s | init | main::
0 | 0 | 0 | 0s | 0s | initsearch | main::
0 | 0 | 0 | 0s | 0s | listkeys | main::
0 | 0 | 0 | 0s | 0s | listnames | main::
0 | 0 | 0 | 0s | 0s | search | main::
0 | 0 | 0 | 0s | 0s | stats | main::
0 | 0 | 0 | 0s | 0s | syncsearch | main::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
0 | 6 | 3.26ms | Profile data that couldn't be associated with a specific line: # spent 3.07ms making 1 call to Attribute::Handlers::CHECK
# spent 61µs making 1 call to Attribute::Handlers::END
# spent 58µs making 1 call to DBI::END
# spent 57µs making 1 call to Attribute::Handlers::INIT
# spent 3µs making 1 call to Class::XSAccessor::END
# spent 3µs making 1 call to Cpanel::JSON::XS::END | ||
1 | 1 | 56µs | #!/home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/perl | ||
2 | # PODNAME: benchmarkanything-storage | ||||
3 | # ABSTRACT: BenchmarkAnything storage cmdline tool | ||||
4 | |||||
5 | 2 | 75µs | 1 | 50µs | # spent 50µs within main::BEGIN@5 which was called:
# once (50µs+0s) by main::NULL at line 5 # spent 50µs making 1 call to main::BEGIN@5 |
6 | 2 | 213µs | 2 | 393µs | # spent 390µs (339+51) within main::BEGIN@6 which was called:
# once (339µs+51µs) by main::NULL at line 6 # spent 390µs making 1 call to main::BEGIN@6
# spent 2µs making 1 call to strict::import |
7 | 2 | 1.40ms | 2 | 1.50ms | # spent 1.50ms (1.47+24µs) within main::BEGIN@7 which was called:
# once (1.47ms+24µs) by main::NULL at line 7 # spent 1.50ms making 1 call to main::BEGIN@7
# spent 5µs making 1 call to warnings::import |
8 | |||||
9 | 2 | 421µs | 2 | 7.52ms | # spent 7.51ms (1.43+6.08) within main::BEGIN@9 which was called:
# once (1.43ms+6.08ms) by main::NULL at line 9 # spent 7.51ms making 1 call to main::BEGIN@9
# spent 2µs making 1 call to App::Rad::import |
10 | |||||
11 | ###################################################################### | ||||
12 | # | ||||
13 | # App::Rad interface | ||||
14 | # | ||||
15 | ###################################################################### | ||||
16 | |||||
17 | 1 | 7µs | 49 | 53.5s | App::Rad->run(); # spent 53.5s making 1 call to App::Rad::run
# spent 97µs making 32 calls to DBI::common::DESTROY, avg 3µs/call
# spent 22µs making 16 calls to DBD::_mem::common::DESTROY, avg 1µs/call |
18 | |||||
19 | sub setup | ||||
20 | # spent 506µs (16+490) within main::setup which was called:
# once (16µs+490µs) by App::Rad::run at line 366 of App/Rad.pm | ||||
21 | 1 | 400ns | my $c = shift; | ||
22 | 1 | 2µs | 1 | 10µs | $c->unregister_command("help"); # spent 10µs making 1 call to App::Rad::unregister_command |
23 | 1 | 3µs | 1 | 459µs | $c->register_commands("help", "search", "add", "createdb", "listnames", "listkeys", "stats", "processqueue", "initsearch", "syncsearch", "gc", "init"); # spent 459µs making 1 call to App::Rad::register_commands |
24 | 1 | 2µs | 1 | 12µs | $c->register('search-sync' => \&syncsearch); # spent 12µs making 1 call to App::Rad::register |
25 | 1 | 4µs | 1 | 10µs | $c->register('search-init' => \&initsearch); # spent 10µs making 1 call to App::Rad::register |
26 | } | ||||
27 | |||||
28 | sub teardown | ||||
29 | # spent 55µs (16+40) within main::teardown which was called:
# once (16µs+40µs) by App::Rad::run at line 376 of App/Rad.pm | ||||
30 | 1 | 400ns | my $c = shift; | ||
31 | |||||
32 | 1 | 14µs | 3 | 40µs | _disconnect($c) unless $c->cmd =~ /^init|help$/; # spent 34µs making 1 call to main::_disconnect
# spent 3µs making 1 call to main::CORE:match
# spent 3µs making 1 call to App::Rad::cmd |
33 | } | ||||
34 | |||||
35 | sub help | ||||
36 | { | ||||
37 | my ($c) = @_; | ||||
38 | |||||
39 | return qq{benchmarkanything-storage | ||||
40 | [-i|--intype <TYPE>] | ||||
41 | [-o|--outtype <TYPE>] | ||||
42 | [-s|--separator <SEPARATOR>] | ||||
43 | [--fb] | ||||
44 | [--fi] | ||||
45 | [-c|--cfgfile <FILE>] | ||||
46 | [--debug] | ||||
47 | [-d|--data] | ||||
48 | [-f|--force] | ||||
49 | [-v|--verbose] | ||||
50 | [--skipvalidation] | ||||
51 | [--queuemode] | ||||
52 | [--startid <VALUE_ID>] | ||||
53 | [--bulkcount <COUNT>] | ||||
54 | [-p|--pattern <PATTERN>] | ||||
55 | [--id <VALUE_ID>] | ||||
56 | [--really <DSN>] | ||||
57 | [init|search|add|createdb|listnames|listkeys|stats|processqueue|search-init|search-sync|gc] | ||||
58 | <DATAFILE> | ||||
59 | |||||
60 | Sub commands: | ||||
61 | |||||
62 | init - Initialize a local BenchmarkAnything setup. | ||||
63 | |||||
64 | search - Search BenchmarkAnything data. | ||||
65 | |||||
66 | add - Add one or more BenchmarkAnything entries. | ||||
67 | |||||
68 | createdb - Drop and create tables in the backend store. | ||||
69 | |||||
70 | listnames - List existing metric names. | ||||
71 | |||||
72 | listkeys - List existing additional key names. | ||||
73 | |||||
74 | stats - Show counts of data points, metrics, keys, etc. | ||||
75 | |||||
76 | processqueue - Works on the result queue created by add --queuemode. | ||||
77 | |||||
78 | search-init - Initializes the configured search engine (Elasticsearch). | ||||
79 | |||||
80 | search-sync - Syncs the DB with the configured search engine (Elasticsearch). | ||||
81 | |||||
82 | gc - Garbage collects artefacts in the backend store. | ||||
83 | |||||
84 | |||||
85 | Options: | ||||
86 | |||||
87 | -i | ||||
88 | --intype - input format | ||||
89 | [json(default), yaml, dumper] | ||||
90 | -o | ||||
91 | --outtype - output format | ||||
92 | [json(default), yaml, dumper] | ||||
93 | |||||
94 | -s | ||||
95 | --separator - sub entry separator for output format 'flat' | ||||
96 | (default=;) | ||||
97 | |||||
98 | --fb - on output format 'flat' use [brackets] around | ||||
99 | outer arrays | ||||
100 | |||||
101 | --fi - on output format 'flat' prefix outer array lines | ||||
102 | with index | ||||
103 | |||||
104 | -c | ||||
105 | --cfgfile - config file for storage backend | ||||
106 | |||||
107 | -p | ||||
108 | --pattern - pattern for 'listnames'/'listkeys' commands (using LIKE) | ||||
109 | |||||
110 | --id - search id for 'search' command. When given, | ||||
111 | other queries are ignored and the result point | ||||
112 | is returned with all additional key/value fields. | ||||
113 | |||||
114 | --queuemode - used for 'add' command; values are just enqueued | ||||
115 | for later actual processing. This lets | ||||
116 | 'add' return quicker, gives higher throughput. | ||||
117 | |||||
118 | -b | ||||
119 | --backend - backend ['sql' (default)] | ||||
120 | |||||
121 | --debug - Pass through 'debug' option to used modules | ||||
122 | |||||
123 | --verbose - print what's going on | ||||
124 | |||||
125 | --force - Force the respective command | ||||
126 | + for 'search-init' it means to delete and re-create the index | ||||
127 | + for 'search-sync' it means to (re-)index all | ||||
128 | |||||
129 | --startid - Starting VALUE_ID for 'search-sync' (default 1). | ||||
130 | |||||
131 | --bulkcount - Chunk size for 'search-sync' (default 10000) | ||||
132 | or for 'processqueue' (default 100). | ||||
133 | |||||
134 | --skipvalidation - Disables schema validation checking, | ||||
135 | usually for 'add' command. | ||||
136 | |||||
137 | --really - used for 'createdb' command. | ||||
138 | Avoids the 'Are you sure?' question. You need to | ||||
139 | provide the DSN from config that createdb would use, | ||||
140 | to avoid painful mistakes. | ||||
141 | |||||
142 | -d | ||||
143 | --data - Data [instead of DATAFILE]. | ||||
144 | |||||
145 | <DATAFILE> - input data file ("-" for STDIN) unless --data is given | ||||
146 | Content depends on the sub command: | ||||
147 | + for 'search' it is a search query | ||||
148 | + for 'add' it is BenchmarkAnything data | ||||
149 | + for 'createdb' no input data is used | ||||
150 | }; | ||||
151 | } | ||||
152 | |||||
153 | sub _connect | ||||
154 | # spent 429ms (2.31+427) within main::_connect which was called:
# once (2.31ms+427ms) by main::_getopt at line 206 | ||||
155 | 1 | 800ns | my ($c) = @_; | ||
156 | |||||
157 | 1 | 56µs | require BenchmarkAnything::Storage::Frontend::Lib; | ||
158 | |||||
159 | 1 | 3µs | 1 | 2µs | my $opt = $c->options; # spent 2µs making 1 call to App::Rad::options |
160 | $c->{_balib} = BenchmarkAnything::Storage::Frontend::Lib->new | ||||
161 | (cfgfile => $opt->{cfgfile}, | ||||
162 | really => $opt->{really}, | ||||
163 | debug => $opt->{debug}, | ||||
164 | verbose => $opt->{verbose}, | ||||
165 | skipvalidation => $opt->{skipvalidation}, | ||||
166 | queuemode => $opt->{queuemode}, | ||||
167 | 1 | 15µs | 3 | 97.0ms | ($c->cmd =~ /^(init|help)$/ ? # spent 97.0ms making 1 call to BenchmarkAnything::Storage::Frontend::Lib::new
# spent 2µs making 1 call to App::Rad::cmd
# spent 2µs making 1 call to main::CORE:match |
168 | ( noconnect => 1, | ||||
169 | noconfig => 1, | ||||
170 | ) : ()), | ||||
171 | ); | ||||
172 | } | ||||
173 | |||||
174 | sub _disconnect | ||||
175 | # spent 34µs (8+26) within main::_disconnect which was called:
# once (8µs+26µs) by main::teardown at line 32 | ||||
176 | 1 | 600ns | my ($c) = @_; | ||
177 | |||||
178 | 1 | 6µs | 1 | 26µs | $c->{_balib}->disconnect if $c->{_balib}; # balib is undef on getopt errors # spent 26µs making 1 call to BenchmarkAnything::Storage::Frontend::Lib::disconnect |
179 | } | ||||
180 | |||||
181 | sub _getopt | ||||
182 | { | ||||
183 | 2 | 800ns | my ($c) = @_; | ||
184 | |||||
185 | 2 | 29µs | 1 | 8.85ms | $c->getopt( "cfgfile|c=s", # spent 8.85ms making 1 call to App::Rad::getopt |
186 | "backend|b=s", | ||||
187 | "intype|i=s", | ||||
188 | "outtype|o=s", | ||||
189 | "separator|s=s", | ||||
190 | "fb", | ||||
191 | "fi", | ||||
192 | "pattern|p=s", | ||||
193 | "id=s", | ||||
194 | "debug", | ||||
195 | "data|d=s", | ||||
196 | "force|f", | ||||
197 | "verbose|v", | ||||
198 | "startid=i", | ||||
199 | "bulkcount=i", | ||||
200 | "skipvalidation", | ||||
201 | "queuemode", | ||||
202 | "really=s", | ||||
203 | ) | ||||
204 | or help() and return undef; | ||||
205 | |||||
206 | 1 | 7µs | 1 | 429ms | _connect($c); # spent 429ms making 1 call to main::_connect |
207 | 1 | 4µs | 1 | 20µs | _set_defaults($c); # spent 20µs making 1 call to main::_set_defaults |
208 | } | ||||
209 | |||||
210 | |||||
211 | sub _set_defaults | ||||
212 | # spent 20µs (15+5) within main::_set_defaults which was called:
# once (15µs+5µs) by main::_getopt at line 207 | ||||
213 | 1 | 500ns | my ($c) = @_; | ||
214 | |||||
215 | 1 | 2µs | 1 | 3µs | $c->{_file} = $c->argv->[0] || '-'; # spent 3µs making 1 call to App::Rad::argv |
216 | 1 | 2µs | 1 | 1µs | $c->options->{outtype} ||= 'json'; # spent 1µs making 1 call to App::Rad::options |
217 | 1 | 1µs | 1 | 300ns | $c->options->{separator} ||= ';'; # spent 300ns making 1 call to App::Rad::options |
218 | 1 | 2µs | 1 | 200ns | $c->options->{fb} ||= 0; # spent 200ns making 1 call to App::Rad::options |
219 | 1 | 3µs | 1 | 200ns | $c->options->{fi} ||= 0; # spent 200ns making 1 call to App::Rad::options |
220 | |||||
221 | } | ||||
222 | |||||
223 | sub init :Help(Initialize a local BenchmarkAnything setup) | ||||
224 | { | ||||
225 | my ($c) = @_; | ||||
226 | |||||
227 | _getopt($c); | ||||
228 | _init($c); | ||||
229 | 2 | 46µs | 2 | 281µs | # spent 144µs (7+137) within main::BEGIN@229 which was called:
# once (7µs+137µs) by main::NULL at line 229 # spent 144µs making 1 call to main::BEGIN@229
# spent 137µs making 1 call to attributes::import |
230 | |||||
231 | sub search :Help(search BenchmarkAnything data) | ||||
232 | { | ||||
233 | my ($c) = @_; | ||||
234 | |||||
235 | _getopt($c); | ||||
236 | _search($c); | ||||
237 | 2 | 41µs | 2 | 187µs | # spent 96µs (5+91) within main::BEGIN@237 which was called:
# once (5µs+91µs) by main::NULL at line 237 # spent 96µs making 1 call to main::BEGIN@237
# spent 91µs making 1 call to attributes::import |
238 | |||||
239 | # spent 21µs (6+14) within main::add which was called:
# once (6µs+14µs) by Attribute::Handlers::_apply_handler_AH_ at line 2 of (eval 4)[Attribute/Handlers.pm:222] | ||||
240 | { | ||||
241 | 1 | 700ns | my ($c) = @_; | ||
242 | |||||
243 | 1 | 5µs | 1 | 14µs | _getopt($c); # spent 14µs making 1 call to main::_getopt |
244 | _add($c); | ||||
245 | 2 | 40µs | 2 | 164µs | # spent 84µs (5+80) within main::BEGIN@245 which was called:
# once (5µs+80µs) by main::NULL at line 245 # spent 84µs making 1 call to main::BEGIN@245
# spent 80µs making 1 call to attributes::import |
246 | |||||
247 | sub createdb :Help(drop and create tables in the backend store) | ||||
248 | { | ||||
249 | my ($c) = @_; | ||||
250 | |||||
251 | _getopt($c); | ||||
252 | _createdb($c); | ||||
253 | 2 | 41µs | 2 | 166µs | # spent 85µs (4+81) within main::BEGIN@253 which was called:
# once (4µs+81µs) by main::NULL at line 253 # spent 85µs making 1 call to main::BEGIN@253
# spent 81µs making 1 call to attributes::import |
254 | |||||
255 | sub listnames :Help(list existing metric names) | ||||
256 | { | ||||
257 | my ($c) = @_; | ||||
258 | |||||
259 | _getopt($c); | ||||
260 | _listnames($c); | ||||
261 | 2 | 38µs | 2 | 155µs | # spent 80µs (5+75) within main::BEGIN@261 which was called:
# once (5µs+75µs) by main::NULL at line 261 # spent 80µs making 1 call to main::BEGIN@261
# spent 75µs making 1 call to attributes::import |
262 | |||||
263 | sub listkeys :Help(list existing additional key names) | ||||
264 | { | ||||
265 | my ($c) = @_; | ||||
266 | |||||
267 | _getopt($c); | ||||
268 | _listkeys($c); | ||||
269 | 2 | 38µs | 2 | 158µs | # spent 82µs (5+76) within main::BEGIN@269 which was called:
# once (5µs+76µs) by main::NULL at line 269 # spent 82µs making 1 call to main::BEGIN@269
# spent 76µs making 1 call to attributes::import |
270 | |||||
271 | sub stats :Help(show backend storage usage counts) | ||||
272 | { | ||||
273 | my ($c) = @_; | ||||
274 | |||||
275 | _getopt($c); | ||||
276 | _stats($c); | ||||
277 | 2 | 44µs | 2 | 174µs | # spent 89µs (4+85) within main::BEGIN@277 which was called:
# once (4µs+85µs) by main::NULL at line 277 # spent 89µs making 1 call to main::BEGIN@277
# spent 85µs making 1 call to attributes::import |
278 | |||||
279 | # spent 53.5s (14µs+53.5) within main::processqueue which was called:
# once (14µs+53.5s) by App::Rad::execute at line 405 of App/Rad.pm | ||||
280 | { | ||||
281 | 1 | 400ns | my ($c) = @_; | ||
282 | |||||
283 | 1 | 1µs | 1 | 438ms | _getopt($c); # spent 438ms making 1 call to main::_getopt |
284 | 1 | 2µs | 1 | 53.0s | _processqueue($c); # spent 53.0s making 1 call to main::_processqueue |
285 | 1 | 8µs | 1 | 34.4ms | _gc($c); # spent 34.4ms making 1 call to main::_gc |
286 | 2 | 42µs | 2 | 160µs | # spent 82µs (5+77) within main::BEGIN@286 which was called:
# once (5µs+77µs) by main::NULL at line 286 # spent 82µs making 1 call to main::BEGIN@286
# spent 77µs making 1 call to attributes::import |
287 | |||||
288 | sub initsearch :Help(Initializes the configured search engine (Elasticsearch)) | ||||
289 | { | ||||
290 | my ($c) = @_; | ||||
291 | |||||
292 | _getopt($c); | ||||
293 | _init_search_engine($c); | ||||
294 | _gc($c); | ||||
295 | 2 | 41µs | 2 | 157µs | # spent 81µs (5+76) within main::BEGIN@295 which was called:
# once (5µs+76µs) by main::NULL at line 295 # spent 81µs making 1 call to main::BEGIN@295
# spent 76µs making 1 call to attributes::import |
296 | |||||
297 | sub syncsearch :Help(Syncs the DB with the configured search engine (Elasticsearch)) | ||||
298 | { | ||||
299 | my ($c) = @_; | ||||
300 | |||||
301 | _getopt($c); | ||||
302 | _sync_search_engine($c); | ||||
303 | _gc($c); | ||||
304 | 2 | 42µs | 2 | 161µs | # spent 83µs (5+78) within main::BEGIN@304 which was called:
# once (5µs+78µs) by main::NULL at line 304 # spent 83µs making 1 call to main::BEGIN@304
# spent 78µs making 1 call to attributes::import |
305 | |||||
306 | sub gc :Help(Garbage collects artefacts in the backend store) | ||||
307 | { | ||||
308 | my ($c) = @_; | ||||
309 | |||||
310 | _getopt($c); | ||||
311 | _gc($c); | ||||
312 | 2 | 520µs | 2 | 158µs | # spent 81µs (4+77) within main::BEGIN@312 which was called:
# once (4µs+77µs) by main::NULL at line 312 # spent 81µs making 1 call to main::BEGIN@312
# spent 77µs making 1 call to attributes::import |
313 | |||||
314 | ###################################################################### | ||||
315 | # | ||||
316 | # Implementation | ||||
317 | # | ||||
318 | ###################################################################### | ||||
319 | |||||
320 | |||||
321 | sub _read_in | ||||
322 | { | ||||
323 | my ($c) = @_; | ||||
324 | |||||
325 | my $opt = $c->options; | ||||
326 | |||||
327 | my $file = $c->{_file}; | ||||
328 | my $intype = $opt->{intype} || 'json'; | ||||
329 | my $data; | ||||
330 | my $filecontent; | ||||
331 | { | ||||
332 | local $/; | ||||
333 | if (defined $opt->{data}) { | ||||
334 | $filecontent = $opt->{data}; | ||||
335 | } | ||||
336 | elsif ($file eq '-') { | ||||
337 | $filecontent = <STDIN>; | ||||
338 | } | ||||
339 | else | ||||
340 | { | ||||
341 | open (my $FH, "<", $file) or die "benchmarkanything-storage: cannot open input file $file.\n"; | ||||
342 | $filecontent = <$FH>; | ||||
343 | close $FH; | ||||
344 | } | ||||
345 | } | ||||
346 | |||||
347 | if (not defined $filecontent or $filecontent !~ /[^\s\t\r\n]/ms) { | ||||
348 | die "benchmarkanything-storage: no meaningful input to read.\n"; | ||||
349 | } | ||||
350 | |||||
351 | if ($intype eq "yaml") { | ||||
352 | require YAML::Any; | ||||
353 | $data = [YAML::Any::Load($filecontent)]; | ||||
354 | } | ||||
355 | elsif ($intype eq "json") { | ||||
356 | require JSON; | ||||
357 | $data = JSON::decode_json($filecontent); | ||||
358 | } | ||||
359 | elsif ($intype eq "dumper") { | ||||
360 | eval '$data = my '.$filecontent; | ||||
361 | } | ||||
362 | else | ||||
363 | { | ||||
364 | die "benchmarkanything-storage: unrecognized input format: $intype.\n"; | ||||
365 | } | ||||
366 | return $data; | ||||
367 | } | ||||
368 | |||||
369 | |||||
370 | sub _write_out | ||||
371 | { | ||||
372 | my ($c, $data) = @_; | ||||
373 | |||||
374 | return $c->{_balib}->_output_format($data, $c->options); | ||||
375 | } | ||||
376 | |||||
377 | sub _listnames | ||||
378 | { | ||||
379 | my ($c) = @_; | ||||
380 | |||||
381 | my $result = $c->{_balib}->listnames ($c->options->{pattern}); | ||||
382 | _write_out($c, $result); | ||||
383 | } | ||||
384 | |||||
385 | sub _listkeys | ||||
386 | { | ||||
387 | my ($c) = @_; | ||||
388 | |||||
389 | my $result = $c->{_balib}->listkeys ($c->options->{pattern}); | ||||
390 | _write_out($c, $result); | ||||
391 | } | ||||
392 | |||||
393 | sub _stats | ||||
394 | { | ||||
395 | my ($c) = @_; | ||||
396 | |||||
397 | my $result = $c->{_balib}->stats; | ||||
398 | _write_out($c, $result); | ||||
399 | } | ||||
400 | |||||
401 | sub _processqueue | ||||
402 | # spent 53.0s (11µs+53.0) within main::_processqueue which was called:
# once (11µs+53.0s) by main::processqueue at line 284 | ||||
403 | 1 | 300ns | my ($c) = @_; | ||
404 | |||||
405 | 1 | 1µs | 1 | 200ns | my $bulkcount = $c->options->{bulkcount} || 100; # spent 200ns making 1 call to App::Rad::options |
406 | 1 | 3µs | 1 | 53.0s | $c->{_balib}->process_raw_result_queue($bulkcount); # spent 53.0s making 1 call to BenchmarkAnything::Storage::Frontend::Lib::process_raw_result_queue |
407 | 1 | 5µs | return; | ||
408 | } | ||||
409 | |||||
410 | sub _init_search_engine | ||||
411 | { | ||||
412 | my ($c) = @_; | ||||
413 | |||||
414 | $c->{_balib}->init_search_engine($c->options->{force}); | ||||
415 | return; | ||||
416 | } | ||||
417 | |||||
418 | sub _sync_search_engine | ||||
419 | { | ||||
420 | my ($c) = @_; | ||||
421 | |||||
422 | my $force = $c->options->{force} || 0; | ||||
423 | my $startid = $c->options->{startid} || 1; | ||||
424 | my $bulkcount = $c->options->{bulkcount} || 10_000; | ||||
425 | $c->{_balib}->sync_search_engine($force, $startid, $bulkcount); | ||||
426 | return; | ||||
427 | } | ||||
428 | |||||
429 | sub _gc | ||||
430 | # spent 34.4ms (86µs+34.3) within main::_gc which was called:
# once (86µs+34.3ms) by main::processqueue at line 285 | ||||
431 | 1 | 600ns | my ($c) = @_; | ||
432 | |||||
433 | 1 | 80µs | 1 | 34.3ms | $c->{_balib}->gc; # spent 34.3ms making 1 call to BenchmarkAnything::Storage::Frontend::Lib::gc |
434 | 1 | 5µs | 1 | 2µs | return; # spent 2µs making 1 call to Cpanel::JSON::XS::DESTROY |
435 | } | ||||
436 | |||||
437 | sub _search | ||||
438 | { | ||||
439 | my ($c) = @_; | ||||
440 | |||||
441 | my $result; | ||||
442 | my $value_id = $c->options->{id}; | ||||
443 | |||||
444 | # special case: search --id gets a full point with all details | ||||
445 | if ($value_id) { | ||||
446 | $result = $c->{_balib}->search(undef, $value_id); | ||||
447 | } | ||||
448 | else | ||||
449 | { | ||||
450 | my $query = _read_in($c); | ||||
451 | $result = $c->{_balib}->search($query); | ||||
452 | } | ||||
453 | _write_out($c, $result); | ||||
454 | } | ||||
455 | |||||
456 | sub _add | ||||
457 | { | ||||
458 | my ($c) = @_; | ||||
459 | |||||
460 | my $data = _read_in($c); | ||||
461 | $c->{_balib}->add ($data); | ||||
462 | return; | ||||
463 | } | ||||
464 | |||||
465 | sub _createdb | ||||
466 | { | ||||
467 | my ($c) = @_; | ||||
468 | |||||
469 | $c->{_balib}->createdb; | ||||
470 | return; | ||||
471 | } | ||||
472 | |||||
473 | sub _init | ||||
474 | { | ||||
475 | my ($c) = @_; | ||||
476 | |||||
477 | my $old_verbose = $c->{_balib}{verbose}; | ||||
478 | $c->{_balib}{verbose} = 1; | ||||
479 | |||||
480 | $c->{_balib}->init_workdir; | ||||
481 | |||||
482 | $c->{_balib}{verbose} = $old_verbose; | ||||
483 | |||||
484 | return; | ||||
485 | } | ||||
486 | |||||
487 | __END__ | ||||
# spent 22µs within DBD::_mem::common::DESTROY which was called 16 times, avg 1µs/call:
# 16 times (22µs+0s) by App::Rad::run at line 17, avg 1µs/call | |||||
# spent 97µs within DBI::common::DESTROY which was called 32 times, avg 3µs/call:
# 32 times (97µs+0s) by App::Rad::run at line 17, avg 3µs/call | |||||
# spent 289ms (134+155) within DBI::common::EXISTS which was called 31629 times, avg 9µs/call:
# 27629 times (121ms+120ms) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 38 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 9µs/call
# 2000 times (8.07ms+20.9ms) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 68 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 14µs/call
# 2000 times (4.56ms+14.6ms) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 94 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 10µs/call | |||||
# spent 108ms within DBI::common::FETCH which was called 89213 times, avg 1µs/call:
# 31629 times (38.9ms+0s) by DBD::_::common::EXISTS at line 1375 of DBI.pm, avg 1µs/call
# 27629 times (13.3ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 38 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 483ns/call
# 18950 times (43.2ms+0s) by DBD::_::st::fetchrow_hashref at line 869 of DBD/mysql.pm, avg 2µs/call
# 2000 times (4.32ms+0s) by BenchmarkAnything::Storage::Backend::SQL::process_queued_multi_benchmark at line 410 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 2µs/call
# 2000 times (3.94ms+0s) by DBD::_::st::fetchall_arrayref at line 2083 of DBI.pm, avg 2µs/call
# 2000 times (1.26ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 71 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 632ns/call
# 2000 times (1.23ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 68 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 613ns/call
# 2000 times (1.02ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 94 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 512ns/call
# 1000 times (730µs+0s) by DBD::_::st::bind_columns at line 1908 of DBI.pm, avg 730ns/call
# 2 times (10µs+0s) by BenchmarkAnything::Storage::Backend::SQL::new at line 141 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 5µs/call
# 2 times (5µs+0s) by BenchmarkAnything::Storage::Backend::SQL::new at line 162 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 2µs/call
# once (7µs+0s) by BenchmarkAnything::Storage::Frontend::Lib::disconnect at line 231 of BenchmarkAnything/Storage/Frontend/Lib.pm | |||||
# spent 409ms within DBI::common::STORE which was called 67264 times, avg 6µs/call:
# 27629 times (25.1ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 38 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 909ns/call
# 4650 times (8.64ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 425 of BenchmarkAnything/Storage/Backend/SQL/Query/mysql.pm, avg 2µs/call
# 4650 times (8.37ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 491 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 4650 times (8.28ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 515 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 4650 times (8.08ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 503 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 2000 times (214ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 105 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 107µs/call
# 2000 times (100ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 72 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 50µs/call
# 2000 times (6.57ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 92 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 3µs/call
# 2000 times (2.34ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 68 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 1µs/call
# 2000 times (1.51ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 94 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 756ns/call
# 1000 times (3.69ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 616 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 4µs/call
# 1000 times (2.63ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 176 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 3µs/call
# 1000 times (2.42ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 689 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 1000 times (2.20ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 704 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 1000 times (2.18ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 382 of BenchmarkAnything/Storage/Backend/SQL/Query/mysql.pm, avg 2µs/call
# 1000 times (2.12ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 431 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 2µs/call
# 1000 times (2.08ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 604 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 1000 times (2.08ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::start_transaction at line 415 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 2µs/call
# 1000 times (2.05ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 117 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 1000 times (1.98ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 405 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 1000 times (1.81ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 268 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm, avg 2µs/call
# 28 times (63µs+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 410 of BenchmarkAnything/Storage/Backend/SQL/Query/mysql.pm, avg 2µs/call
# 3 times (6µs+0s) by DBI::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBI.pm:750] at line 735 of DBI.pm, avg 2µs/call
# 2 times (4µs+0s) by DBI::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBI.pm:750] at line 738 of DBI.pm, avg 2µs/call
# once (9µs+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 652 of BenchmarkAnything/Storage/Backend/SQL/Query/common.pm
# once (1µs+0s) by DBI::connect at line 754 of DBI.pm | |||||
# spent 3.15ms within DBI::common::func which was called 3015 times, avg 1µs/call:
# 3000 times (3.13ms+0s) by DBD::mysql::st::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBD/mysql.pm:881] at line 879 of DBD/mysql.pm, avg 1µs/call
# 15 times (20µs+0s) by DBD::mysql::db::prepare at line 240 of DBD/mysql.pm, avg 1µs/call | |||||
# spent 22.4s within DBI::db::commit which was called 2000 times, avg 11.2ms/call:
# 2000 times (22.4s+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::finish_transaction at line 102 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 11.2ms/call | |||||
# spent 2µs within DBI::db::connected which was called:
# once (2µs+0s) by DBI::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBI.pm:750] at line 745 of DBI.pm | |||||
# spent 121ms within DBI::db::do which was called 2000 times, avg 60µs/call:
# 1000 times (60.5ms+0s) by BenchmarkAnything::Storage::Backend::SQL::process_queued_multi_benchmark at line 414 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 61µs/call
# 1000 times (60.2ms+0s) by BenchmarkAnything::Storage::Backend::SQL::process_queued_multi_benchmark at line 428 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 60µs/call | |||||
# spent 2.02ms within DBI::db::last_insert_id which was called 1028 times, avg 2µs/call:
# 1028 times (2.02ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::last_insert_id at line 59 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 2µs/call | |||||
# spent 509µs (53+456) within DBI::db::prepare which was called 15 times, avg 34µs/call:
# 15 times (53µs+456µs) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 45 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 34µs/call | |||||
# spent 1.13ms (6µs+1.12) within DBI::dr::connect which was called:
# once (6µs+1.12ms) by DBI::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBI.pm:750] at line 683 of DBI.pm | |||||
# spent 10µs within DBI::dr::disconnect_all which was called:
# once (10µs+0s) by DBI::disconnect_all at line 762 of DBI.pm | |||||
# spent 22.4ms (10.9+11.5) within DBI::st::bind_col which was called 2000 times, avg 11µs/call:
# 2000 times (10.9ms+11.5ms) by DBD::_::st::bind_columns at line 1919 of DBI.pm, avg 11µs/call | |||||
# spent 60.9ms (9.30+51.6) within DBI::st::bind_columns which was called 1000 times, avg 61µs/call:
# 1000 times (9.30ms+51.6ms) by DBD::_::st::fetchall_arrayref at line 2083 of DBI.pm, avg 61µs/call | |||||
# spent 4.33s within DBI::st::execute which was called 27629 times, avg 157µs/call:
# 27629 times (4.33s+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 48 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 157µs/call | |||||
# spent 39.8ms within DBI::st::fetch which was called 24600 times, avg 2µs/call:
# 18950 times (33.4ms+0s) by DBD::_::st::fetchrow_hashref at line 869 of DBD/mysql.pm, avg 2µs/call
# 5650 times (6.37ms+0s) by DBD::_::st::fetchall_arrayref at line 2090 of DBI.pm, avg 1µs/call | |||||
# spent 121ms (8.22+113) within DBI::st::fetchall_arrayref which was called 1000 times, avg 121µs/call:
# 1000 times (8.22ms+113ms) by BenchmarkAnything::Storage::Backend::SQL::get_single_benchmark_point at line 642 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 121µs/call | |||||
# spent 502ms (104+397) within DBI::st::fetchrow_hashref which was called 18950 times, avg 26µs/call:
# 4650 times (22.0ms+96.5ms) by BenchmarkAnything::Storage::Backend::SQL::add_single_benchmark at line 304 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 25µs/call
# 4650 times (15.1ms+95.4ms) by BenchmarkAnything::Storage::Backend::SQL::add_single_benchmark at line 274 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 24µs/call
# 4650 times (15.3ms+80.4ms) by BenchmarkAnything::Storage::Backend::SQL::add_single_benchmark at line 325 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 21µs/call
# 1000 times (33.9ms+23.9ms) by BenchmarkAnything::Storage::Backend::SQL::add_single_benchmark at line 186 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 58µs/call
# 1000 times (9.24ms+28.3ms) by BenchmarkAnything::Storage::Backend::SQL::process_queued_multi_benchmark at line 436 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 38µs/call
# 1000 times (3.49ms+29.6ms) by BenchmarkAnything::Storage::Backend::SQL::process_queued_multi_benchmark at line 418 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 33µs/call
# 1000 times (3.01ms+21.8ms) by BenchmarkAnything::Storage::Backend::SQL::get_single_benchmark_point at line 647 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 25µs/call
# 1000 times (2.28ms+21.4ms) by BenchmarkAnything::Storage::Backend::SQL::add_single_benchmark at line 238 of BenchmarkAnything/Storage/Backend/SQL.pm, avg 24µs/call | |||||
# spent 45.3ms within DBI::st::finish which was called 27614 times, avg 2µs/call:
# 27614 times (45.3ms+0s) by BenchmarkAnything::Storage::Backend::SQL::Query::execute_query at line 41 of BenchmarkAnything/Storage/Backend/SQL/Query.pm, avg 2µs/call | |||||
# spent 19.4ms within DBI::st::mysql_async_ready which was called 18950 times, avg 1µs/call:
# 18950 times (19.4ms+0s) by DBD::mysql::st::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/DBD/mysql.pm:870] at line 866 of DBD/mysql.pm, avg 1µs/call | |||||
# spent 57µs within Internals::SvREADONLY which was called 179 times, avg 321ns/call:
# 177 times (57µs+0s) by constant::import at line 164 of constant.pm, avg 321ns/call
# once (500ns+0s) by constant::BEGIN@24 at line 33 of constant.pm
# once (200ns+0s) by constant::BEGIN@24 at line 34 of constant.pm | |||||
sub main::CORE:match; # opcode | |||||
# spent 11µs within main::CORE:pack which was called 7 times, avg 2µs/call:
# once (2µs+0s) by Search::Elasticsearch::Cxn::HTTPTiny::BEGIN@6 at line 610 of IO/Socket/IP.pm
# once (2µs+0s) by IO::Compress::Gzip::BEGIN@15 at line 145 of IO/Compress/Gzip/Constants.pm
# once (2µs+0s) by HTTP::Tiny::Handle::BEGIN@866 at line 319 of IO/Socket.pm
# once (2µs+0s) by YAML::XS::BEGIN@57 at line 4723 of B/Deparse.pm
# once (800ns+0s) by YAML::XS::BEGIN@57 at line 4774 of B/Deparse.pm
# once (600ns+0s) by YAML::XS::BEGIN@57 at line 4791 of B/Deparse.pm
# once (300ns+0s) by YAML::XS::BEGIN@57 at line 4794 of B/Deparse.pm | |||||
# spent 4µs within version::(bool which was called:
# once (4µs+0s) by DynaLoader::BEGIN@22 at line 59 of Config.pm | |||||
# spent 2µs within version::(cmp which was called:
# once (2µs+0s) by DynaLoader::BEGIN@22 at line 62 of Config.pm |