← Index
NYTProf Performance Profile   « line view »
For /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
  Run on Mon Jan 29 16:55:34 2018
Reported on Mon Jan 29 16:57:06 2018

Filename/home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
StatementsExecuted 69 statements in 3.38ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
20001122.4s22.4sDBI::db::::commit DBI::db::commit (xsub)
27629114.33s4.33sDBI::st::::execute DBI::st::execute (xsub)
67264265409ms409msDBI::common::::STORE DBI::common::STORE (xsub)
3162931134ms289msDBI::common::::EXISTS DBI::common::EXISTS (xsub)
200021121ms121msDBI::db::::do DBI::db::do (xsub)
89213125108ms108msDBI::common::::FETCH DBI::common::FETCH (xsub)
1895081104ms502msDBI::st::::fetchrow_hashref DBI::st::fetchrow_hashref (xsub)
276141145.3ms45.3msDBI::st::::finish DBI::st::finish (xsub)
246002239.8ms39.8msDBI::st::::fetch DBI::st::fetch (xsub)
189501119.4ms19.4msDBI::st::::mysql_async_ready DBI::st::mysql_async_ready (xsub)
20001110.9ms22.4msDBI::st::::bind_col DBI::st::bind_col (xsub)
1000119.30ms60.9msDBI::st::::bind_columns DBI::st::bind_columns (xsub)
1000118.22ms121msDBI::st::::fetchall_arrayref DBI::st::fetchall_arrayref (xsub)
3015213.15ms3.15msDBI::common::::func DBI::common::func (xsub)
1112.31ms429msmain::::_connect main::_connect
1028112.02ms2.02msDBI::db::::last_insert_id DBI::db::last_insert_id (xsub)
1111.47ms1.50msmain::::BEGIN@7 main::BEGIN@7
1111.43ms7.51msmain::::BEGIN@9 main::BEGIN@9
111339µs390µsmain::::BEGIN@6 main::BEGIN@6
321197µs97µsDBI::common::::DESTROY DBI::common::DESTROY (xsub)
11186µs34.4msmain::::_gc main::_gc
1793157µs57µsInternals::::SvREADONLY Internals::SvREADONLY (xsub)
151153µs509µsDBI::db::::prepare DBI::db::prepare (xsub)
11150µs50µsmain::::BEGIN@5 main::BEGIN@5
22130µs438msmain::::_getopt main::_getopt
161122µs22µsDBD::_mem::common::::DESTROYDBD::_mem::common::DESTROY (xsub)
11116µs506µsmain::::setup main::setup
11116µs55µsmain::::teardown main::teardown
11115µs20µsmain::::_set_defaults main::_set_defaults
11114µs53.5smain::::processqueue main::processqueue
77411µs11µsmain::::CORE:pack main::CORE:pack (opcode)
11111µs53.0smain::::_processqueue main::_processqueue
11110µs10µsDBI::dr::::disconnect_all DBI::dr::disconnect_all (xsub)
1119µs9µsmain::::engine main::engine
1118µs34µsmain::::_disconnect main::_disconnect
1117µs144µsmain::::BEGIN@229 main::BEGIN@229
1116µs21µsmain::::add main::add
1116µs1.13msDBI::dr::::connect DBI::dr::connect (xsub)
1115µs82µsmain::::BEGIN@269 main::BEGIN@269
1115µs96µsmain::::BEGIN@237 main::BEGIN@237
1115µs80µsmain::::BEGIN@261 main::BEGIN@261
1115µs82µsmain::::BEGIN@286 main::BEGIN@286
2215µs5µsmain::::CORE:match main::CORE:match (opcode)
1115µs84µsmain::::BEGIN@245 main::BEGIN@245
1115µs81µsmain::::BEGIN@295 main::BEGIN@295
1115µs83µsmain::::BEGIN@304 main::BEGIN@304
1114µs81µsmain::::BEGIN@312 main::BEGIN@312
1114µs4µsversion::::(bool version::(bool (xsub)
1114µs85µsmain::::BEGIN@253 main::BEGIN@253
1114µs89µsmain::::BEGIN@277 main::BEGIN@277
1112µs2µsversion::::(cmp version::(cmp (xsub)
1112µs2µsDBI::db::::connected DBI::db::connected (xsub)
0000s0smain::::RUNTIME main::RUNTIME
0000s0smain::::_add main::_add
0000s0smain::::_createdb main::_createdb
0000s0smain::::_init main::_init
0000s0smain::::_init_search_engine main::_init_search_engine
0000s0smain::::_listkeys main::_listkeys
0000s0smain::::_listnames main::_listnames
0000s0smain::::_read_in main::_read_in
0000s0smain::::_search main::_search
0000s0smain::::_stats main::_stats
0000s0smain::::_sync_search_engine main::_sync_search_engine
0000s0smain::::_write_out main::_write_out
0000s0smain::::createdb main::createdb
0000s0smain::::gc main::gc
0000s0smain::::help main::help
0000s0smain::::init main::init
0000s0smain::::initsearch main::initsearch
0000s0smain::::listkeys main::listkeys
0000s0smain::::listnames main::listnames
0000s0smain::::search main::search
0000s0smain::::stats main::stats
0000s0smain::::syncsearch main::syncsearch
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
063.26msProfile 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
1156µs#!/home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/perl
2# PODNAME: benchmarkanything-storage
3# ABSTRACT: BenchmarkAnything storage cmdline tool
4
5275µs150µs
# spent 50µs within main::BEGIN@5 which was called: # once (50µs+0s) by main::NULL at line 5
use 5.008;
# spent 50µs making 1 call to main::BEGIN@5
62213µs2393µs
# spent 390µs (339+51) within main::BEGIN@6 which was called: # once (339µs+51µs) by main::NULL at line 6
use strict;
# spent 390µs making 1 call to main::BEGIN@6 # spent 2µs making 1 call to strict::import
721.40ms21.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
use warnings;
# spent 1.50ms making 1 call to main::BEGIN@7 # spent 5µs making 1 call to warnings::import
8
92421µs27.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
use App::Rad;
# 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
1717µs4953.5sApp::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
19sub 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
{
211400ns my $c = shift;
2212µs110µs $c->unregister_command("help");
# spent 10µs making 1 call to App::Rad::unregister_command
2313µs1459µ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
2412µs112µs $c->register('search-sync' => \&syncsearch);
# spent 12µs making 1 call to App::Rad::register
2514µs110µs $c->register('search-init' => \&initsearch);
# spent 10µs making 1 call to App::Rad::register
26}
27
28sub 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
{
301400ns my $c = shift;
31
32114µs340µ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
35sub 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
153sub _connect
154
# spent 429ms (2.31+427) within main::_connect which was called: # once (2.31ms+427ms) by main::_getopt at line 206
{
1551800ns my ($c) = @_;
156
157156µs require BenchmarkAnything::Storage::Frontend::Lib;
158
15913µs12µ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},
167115µs397.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
174sub _disconnect
175
# spent 34µs (8+26) within main::_disconnect which was called: # once (8µs+26µs) by main::teardown at line 32
{
1761600ns my ($c) = @_;
177
17816µs126µs $c->{_balib}->disconnect if $c->{_balib}; # balib is undef on getopt errors
179}
180
181sub _getopt
182
# spent 438ms (30µs+438) within main::_getopt which was called 2 times, avg 219ms/call: # once (15µs+438ms) by main::processqueue at line 283 # once (14µs+0s) by main::add at line 243
{
1832800ns my ($c) = @_;
184
185229µs18.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
20617µs1429ms _connect($c);
# spent 429ms making 1 call to main::_connect
20714µs120µs _set_defaults($c);
# spent 20µs making 1 call to main::_set_defaults
208}
209
210
211sub _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
{
2131500ns my ($c) = @_;
214
21512µs13µs $c->{_file} = $c->argv->[0] || '-';
# spent 3µs making 1 call to App::Rad::argv
21612µs11µs $c->options->{outtype} ||= 'json';
# spent 1µs making 1 call to App::Rad::options
21711µs1300ns $c->options->{separator} ||= ';';
# spent 300ns making 1 call to App::Rad::options
21812µs1200ns $c->options->{fb} ||= 0;
# spent 200ns making 1 call to App::Rad::options
21913µs1200ns $c->options->{fi} ||= 0;
# spent 200ns making 1 call to App::Rad::options
220
221}
222
223sub init :Help(Initialize a local BenchmarkAnything setup)
224{
225 my ($c) = @_;
226
227 _getopt($c);
228 _init($c);
229246µs2281µ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
231sub search :Help(search BenchmarkAnything data)
232{
233 my ($c) = @_;
234
235 _getopt($c);
236 _search($c);
237241µs2187µ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]
sub add :Help(add one or more BenchmarkAnything entries)
240{
2411700ns my ($c) = @_;
242
24315µs114µs _getopt($c);
# spent 14µs making 1 call to main::_getopt
244 _add($c);
245240µs2164µ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
247sub createdb :Help(drop and create tables in the backend store)
248{
249 my ($c) = @_;
250
251 _getopt($c);
252 _createdb($c);
253241µs2166µ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
255sub listnames :Help(list existing metric names)
256{
257 my ($c) = @_;
258
259 _getopt($c);
260 _listnames($c);
261238µs2155µ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
263sub listkeys :Help(list existing additional key names)
264{
265 my ($c) = @_;
266
267 _getopt($c);
268 _listkeys($c);
269238µs2158µ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
271sub stats :Help(show backend storage usage counts)
272{
273 my ($c) = @_;
274
275 _getopt($c);
276 _stats($c);
277244µs2174µ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
sub processqueue :Help(Works on the result queue created by add --queuemode)
280{
2811400ns my ($c) = @_;
282
28311µs1438ms _getopt($c);
# spent 438ms making 1 call to main::_getopt
28412µs153.0s _processqueue($c);
# spent 53.0s making 1 call to main::_processqueue
28518µs134.4ms _gc($c);
# spent 34.4ms making 1 call to main::_gc
286242µs2160µ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
288sub initsearch :Help(Initializes the configured search engine (Elasticsearch))
289{
290 my ($c) = @_;
291
292 _getopt($c);
293 _init_search_engine($c);
294 _gc($c);
295241µs2157µ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
297sub 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);
304242µs2161µ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
306sub gc :Help(Garbage collects artefacts in the backend store)
307{
308 my ($c) = @_;
309
310 _getopt($c);
311 _gc($c);
3122520µs2158µ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
321sub _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
370sub _write_out
371{
372 my ($c, $data) = @_;
373
374 return $c->{_balib}->_output_format($data, $c->options);
375}
376
377sub _listnames
378{
379 my ($c) = @_;
380
381 my $result = $c->{_balib}->listnames ($c->options->{pattern});
382 _write_out($c, $result);
383}
384
385sub _listkeys
386{
387 my ($c) = @_;
388
389 my $result = $c->{_balib}->listkeys ($c->options->{pattern});
390 _write_out($c, $result);
391}
392
393sub _stats
394{
395 my ($c) = @_;
396
397 my $result = $c->{_balib}->stats;
398 _write_out($c, $result);
399}
400
401sub _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
{
4031300ns my ($c) = @_;
404
40511µs1200ns my $bulkcount = $c->options->{bulkcount} || 100;
# spent 200ns making 1 call to App::Rad::options
40613µs153.0s $c->{_balib}->process_raw_result_queue($bulkcount);
40715µs return;
408}
409
410sub _init_search_engine
411{
412 my ($c) = @_;
413
414 $c->{_balib}->init_search_engine($c->options->{force});
415 return;
416}
417
418sub _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
429sub _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
{
4311600ns my ($c) = @_;
432
433180µs134.3ms $c->{_balib}->gc;
# spent 34.3ms making 1 call to BenchmarkAnything::Storage::Frontend::Lib::gc
43415µs12µs return;
# spent 2µs making 1 call to Cpanel::JSON::XS::DESTROY
435}
436
437sub _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
456sub _add
457{
458 my ($c) = @_;
459
460 my $data = _read_in($c);
461 $c->{_balib}->add ($data);
462 return;
463}
464
465sub _createdb
466{
467 my ($c) = @_;
468
469 $c->{_balib}->createdb;
470 return;
471}
472
473sub _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
sub DBD::_mem::common::DESTROY; # xsub
# 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
sub DBI::common::DESTROY; # xsub
# 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
sub DBI::common::EXISTS; # xsub
# 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
sub DBI::common::FETCH; # xsub
# 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
sub DBI::common::STORE; # xsub
# 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
sub DBI::common::func; # xsub
# 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
sub DBI::db::commit; # xsub
# 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
sub DBI::db::connected; # xsub
# 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
sub DBI::db::do; # xsub
# 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
sub DBI::db::last_insert_id; # xsub
# 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
sub DBI::db::prepare; # xsub
# 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
sub DBI::dr::connect; # xsub
# 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
sub DBI::dr::disconnect_all; # xsub
# 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
sub DBI::st::bind_col; # xsub
# 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
sub DBI::st::bind_columns; # xsub
# 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
sub DBI::st::execute; # xsub
# 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
sub DBI::st::fetch; # xsub
# 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
sub DBI::st::fetchall_arrayref; # xsub
# 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
sub DBI::st::fetchrow_hashref; # xsub
# 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
sub DBI::st::finish; # xsub
# 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
sub DBI::st::mysql_async_ready; # xsub
# 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 Internals::SvREADONLY; # xsub
# spent 5µs within main::CORE:match which was called 2 times, avg 2µs/call: # once (3µs+0s) by main::teardown at line 32 # once (2µs+0s) by main::_connect at line 167
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
sub main::CORE:pack; # opcode
# spent 4µs within version::(bool which was called: # once (4µs+0s) by DynaLoader::BEGIN@22 at line 59 of Config.pm
sub version::(bool; # xsub
# spent 2µs within version::(cmp which was called: # once (2µs+0s) by DynaLoader::BEGIN@22 at line 62 of Config.pm
sub version::(cmp; # xsub