← 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:07 2018

Filename/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/Sub/Defer.pm
StatementsExecuted 32688 statements in 122ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
5522347µs828µsSub::Defer::::defer_sub Sub::Defer::defer_sub
1922263µs9.31msSub::Defer::::undefer_sub Sub::Defer::undefer_sub
111135µs35µsSub::Defer::::defer_info Sub::Defer::defer_info
11115µs27µsSub::Defer::::BEGIN@6 Sub::Defer::BEGIN@6
1116µs13µsSub::Defer::::BEGIN@3 Sub::Defer::BEGIN@3
1115µs12µsSub::Defer::::BEGIN@27 Sub::Defer::BEGIN@27
1114µs8µsSub::Defer::::BEGIN@4 Sub::Defer::BEGIN@4
1114µs32µsSub::Defer::::BEGIN@5 Sub::Defer::BEGIN@5
111700ns700nsSearch::Elasticsearch::Role::Logger::::log_to Search::Elasticsearch::Role::Logger::log_to (xsub)
111600ns600nsSearch::Elasticsearch::Role::Logger::::log_as Search::Elasticsearch::Role::Logger::log_as (xsub)
111600ns600nsSearch::Elasticsearch::Role::Logger::::trace_to Search::Elasticsearch::Role::Logger::trace_to (xsub)
111500ns500nsSearch::Elasticsearch::Role::Logger::::trace_as Search::Elasticsearch::Role::Logger::trace_as (xsub)
0000s0sCHI::Stats::::new CHI::Stats::new
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::_bulk_classSearch::Elasticsearch::Client::5_0::Direct::_bulk_class
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::_scroll_classSearch::Elasticsearch::Client::5_0::Direct::_scroll_class
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::catSearch::Elasticsearch::Client::5_0::Direct::cat
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::clusterSearch::Elasticsearch::Client::5_0::Direct::cluster
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::ingestSearch::Elasticsearch::Client::5_0::Direct::ingest
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::nodesSearch::Elasticsearch::Client::5_0::Direct::nodes
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::snapshotSearch::Elasticsearch::Client::5_0::Direct::snapshot
0000s0sSearch::Elasticsearch::Client::5_0::Direct::::tasksSearch::Elasticsearch::Client::5_0::Direct::tasks
0000s0sSearch::Elasticsearch::Role::Cxn::::clear_handle Search::Elasticsearch::Role::Cxn::clear_handle
0000s0sSearch::Elasticsearch::Role::Logger::::critical Search::Elasticsearch::Role::Logger::critical
0000s0sSearch::Elasticsearch::Role::Logger::::criticalf Search::Elasticsearch::Role::Logger::criticalf
0000s0sSearch::Elasticsearch::Role::Logger::::debug Search::Elasticsearch::Role::Logger::debug
0000s0sSearch::Elasticsearch::Role::Logger::::debugf Search::Elasticsearch::Role::Logger::debugf
0000s0sSearch::Elasticsearch::Role::Logger::::deprecate_handle Search::Elasticsearch::Role::Logger::deprecate_handle
0000s0sSearch::Elasticsearch::Role::Logger::::error Search::Elasticsearch::Role::Logger::error
0000s0sSearch::Elasticsearch::Role::Logger::::errorf Search::Elasticsearch::Role::Logger::errorf
0000s0sSearch::Elasticsearch::Role::Logger::::is_critical Search::Elasticsearch::Role::Logger::is_critical
0000s0sSearch::Elasticsearch::Role::Logger::::is_debug Search::Elasticsearch::Role::Logger::is_debug
0000s0sSearch::Elasticsearch::Role::Logger::::is_error Search::Elasticsearch::Role::Logger::is_error
0000s0sSearch::Elasticsearch::Role::Logger::::is_info Search::Elasticsearch::Role::Logger::is_info
0000s0sSearch::Elasticsearch::Role::Logger::::is_warning Search::Elasticsearch::Role::Logger::is_warning
0000s0sSearch::Elasticsearch::Role::Logger::::log_handle Search::Elasticsearch::Role::Logger::log_handle
0000s0sSearch::Elasticsearch::Role::Logger::::trace Search::Elasticsearch::Role::Logger::trace
0000s0sSearch::Elasticsearch::Role::Logger::::trace_handle Search::Elasticsearch::Role::Logger::trace_handle
0000s0sSearch::Elasticsearch::Role::Logger::::tracef Search::Elasticsearch::Role::Logger::tracef
0000s0sSearch::Elasticsearch::Role::Logger::::warning Search::Elasticsearch::Role::Logger::warning
0000s0sSearch::Elasticsearch::Role::Logger::::warningf Search::Elasticsearch::Role::Logger::warningf
0000s0sSub::Defer::::CLONE Sub::Defer::CLONE
0000s0sSub::Defer::::__ANON__[:65] Sub::Defer::__ANON__[:65]
0000s0sSub::Defer::::undefer_all Sub::Defer::undefer_all
0000s0sSub::Defer::::undefer_package Sub::Defer::undefer_package
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Sub::Defer;
2
3214µs220µs
# spent 13µs (6+7) within Sub::Defer::BEGIN@3 which was called: # once (6µs+7µs) by Sub::Quote::BEGIN@7 at line 3
use Moo::_strictures;
# spent 13µs making 1 call to Sub::Defer::BEGIN@3 # spent 7µs making 1 call to Moo::_strictures::import
4213µs212µs
# spent 8µs (4+4) within Sub::Defer::BEGIN@4 which was called: # once (4µs+4µs) by Sub::Quote::BEGIN@7 at line 4
use Exporter qw(import);
# spent 8µs making 1 call to Sub::Defer::BEGIN@4 # spent 4µs making 1 call to Exporter::import
5214µs260µs
# spent 32µs (4+28) within Sub::Defer::BEGIN@5 which was called: # once (4µs+28µs) by Sub::Quote::BEGIN@7 at line 5
use Moo::_Utils qw(_getglob _install_coderef);
# spent 32µs making 1 call to Sub::Defer::BEGIN@5 # spent 28µs making 1 call to Exporter::import
62123µs239µs
# spent 27µs (15+12) within Sub::Defer::BEGIN@6 which was called: # once (15µs+12µs) by Sub::Quote::BEGIN@7 at line 6
use Scalar::Util qw(weaken);
# spent 27µs making 1 call to Sub::Defer::BEGIN@6 # spent 12µs making 1 call to Exporter::import
7
81300nsour $VERSION = '2.000002';
918µs$VERSION = eval $VERSION;
# spent 2µs executing statements in string eval
10
111600nsour @EXPORT = qw(defer_sub undefer_sub undefer_all);
121300nsour @EXPORT_OK = qw(undefer_package);
13
14our %DEFERRED;
15
16
# spent 9.31ms (263µs+9.04) within Sub::Defer::undefer_sub which was called 19 times, avg 490µs/call: # 16 times (245µs+8.85ms) by BenchmarkAnything::Storage::Search::Elasticsearch::Serializer::JSON::DontTouchMyUTF8::new or Method::Generate::Constructor::new or Search::Elasticsearch::Client::5_0::Direct::Indices::new or Search::Elasticsearch::Client::5_0::Direct::indices or Search::Elasticsearch::Client::5_0::Direct::new or Search::Elasticsearch::Cxn::Factory::new or Search::Elasticsearch::Cxn::HTTPTiny::new or Search::Elasticsearch::CxnPool::Static::new or Search::Elasticsearch::Logger::LogAny::new or Search::Elasticsearch::Role::Logger::_assert_log_handle or Search::Elasticsearch::Role::Logger::_assert_trace_handle or Search::Elasticsearch::Role::Logger::info or Search::Elasticsearch::Role::Logger::infof or Search::Elasticsearch::Role::Logger::is_trace or Search::Elasticsearch::Serializer::JSON::new or Search::Elasticsearch::Transport::new at line 63, avg 568µs/call # 3 times (17µs+192µs) by Moo::_Utils::_install_modifier at line 40 of Moo/_Utils.pm, avg 70µs/call
sub undefer_sub {
17197µs my ($deferred) = @_;
18 my ($target, $maker, $undeferred_ref) = @{
191935µs $DEFERRED{$deferred}||return $deferred
20 };
21 return ${$undeferred_ref}
22174µs if ${$undeferred_ref};
231766µs179.01ms ${$undeferred_ref} = my $made = $maker->();
# spent 7.37ms making 10 calls to Method::Generate::Constructor::__ANON__[Method/Generate/Constructor.pm:97], avg 737µs/call # spent 1.63ms making 7 calls to Sub::Quote::__ANON__[Sub/Quote.pm:98], avg 233µs/call
24
25 # make sure the method slot has not changed since deferral time
261740µs1727µs if (defined($target) && $deferred eq *{_getglob($target)}{CODE}||'') {
# spent 27µs making 17 calls to Moo::_Utils::_getglob, avg 2µs/call
272234µs219µs
# spent 12µs (5+7) within Sub::Defer::BEGIN@27 which was called: # once (5µs+7µs) by Sub::Quote::BEGIN@7 at line 27
no warnings 'redefine';
# spent 12µs making 1 call to Sub::Defer::BEGIN@27 # spent 7µs making 1 call to warnings::unimport
28
29 # I believe $maker already evals with the right package/name, so that
30 # _install_coderef calls are not necessary --ribasushi
311717µs179µs *{_getglob($target)} = $made;
# spent 9µs making 17 calls to Moo::_Utils::_getglob, avg 541ns/call
32 }
331721µs $DEFERRED{$made} = $DEFERRED{$deferred};
34174µs weaken $DEFERRED{$made}
35 unless $target;
36
371751µs return $made;
38}
39
40sub undefer_all {
41 undefer_sub($_) for keys %DEFERRED;
42 return;
43}
44
45sub undefer_package {
46 my $package = shift;
47 my @subs = grep { $DEFERRED{$_}[0] =~ /^${package}::[^:]+$/ } keys %DEFERRED;
48 undefer_sub($_) for @subs;
49 return;
50}
51
52
# spent 35µs within Sub::Defer::defer_info which was called 11 times, avg 3µs/call: # 11 times (35µs+0s) by Moo::_accessor_maker_for at line 132 of Moo.pm, avg 3µs/call
sub defer_info {
53116µs my ($deferred) = @_;
541132µs my $info = $DEFERRED{$deferred||''} or return undef;
55 [ @$info ];
56}
57
58
# spent 828µs (347+482) within Sub::Defer::defer_sub which was called 55 times, avg 15µs/call: # 44 times (249µs+347µs) by Sub::Quote::quote_sub at line 98 of Sub/Quote.pm, avg 14µs/call # 11 times (98µs+135µs) by Method::Generate::Constructor::install_delayed at line 97 of Method/Generate/Constructor.pm, avg 21µs/call
sub defer_sub {
595510µs my ($target, $maker) = @_;
60556µs my $undeferred;
61 my $deferred_info;
62 my $deferred = sub {
63160274.02ms169.10ms $undeferred ||= undefer_sub($deferred_info->[3]);
# spent 9.10ms making 16 calls to Sub::Defer::undefer_sub, avg 568µs/call
6416027117ms16027772ms goto &$undeferred;
# spent 204ms making 4004 calls to Search::Elasticsearch::Role::Logger::infof, avg 51µs/call # spent 175ms making 2002 calls to Search::Elasticsearch::Role::Logger::is_trace, avg 87µs/call # spent 94.3ms making 5005 calls to Search::Elasticsearch::Role::Logger::_assert_log_handle, avg 19µs/call # spent 94.1ms making 2002 calls to Search::Elasticsearch::Role::Logger::_assert_trace_handle, avg 47µs/call # spent 90.8ms making 2002 calls to Search::Elasticsearch::Role::Cxn::handle, avg 45µs/call # spent 59.3ms making 1 call to Search::Elasticsearch::Cxn::Factory::new # spent 39.0ms making 1001 calls to Search::Elasticsearch::Role::Logger::info, avg 39µs/call # spent 9.65ms making 1 call to Search::Elasticsearch::CxnPool::Static::new # spent 3.17ms making 1 call to Search::Elasticsearch::Client::5_0::Direct::indices # spent 3.13ms making 1 call to Search::Elasticsearch::Cxn::HTTPTiny::new # spent 89µs making 1 call to Search::Elasticsearch::Transport::new # spent 32µs making 1 call to Search::Elasticsearch::Serializer::JSON::new # spent 25µs making 1 call to BenchmarkAnything::Storage::Search::Elasticsearch::Serializer::JSON::DontTouchMyUTF8::new # spent 13µs making 1 call to Search::Elasticsearch::Client::5_0::Direct::new # spent 11µs making 1 call to Search::Elasticsearch::Logger::LogAny::new # spent 9µs making 1 call to Search::Elasticsearch::Client::5_0::Direct::Indices::new # spent 7µs making 1 call to Method::Generate::Constructor::new
655553µs };
665535µs $deferred_info = [ $target, $maker, \$undeferred, $deferred ];
675594µs5528µs weaken($deferred_info->[3]);
# spent 28µs making 55 calls to Scalar::Util::weaken, avg 515ns/call
685593µs5511µs weaken($DEFERRED{$deferred} = $deferred_info);
# spent 11µs making 55 calls to Scalar::Util::weaken, avg 200ns/call
695536µs45442µs _install_coderef($target => $deferred) if defined $target;
# spent 442µs making 45 calls to Moo::_Utils::_install_coderef, avg 10µs/call
705576µs return $deferred;
71}
72
73sub CLONE {
74 %DEFERRED = map { defined $_ && $_->[3] ? ($_->[3] => $_) : () } values %DEFERRED;
75 foreach my $info (values %DEFERRED) {
76 weaken($info)
77 unless $info->[0] && ${$info->[2]};
78 }
79}
80
8113µs1;
82__END__
 
# spent 600ns within Search::Elasticsearch::Role::Logger::log_as which was called: # once (600ns+0s) by Search::Elasticsearch::Logger::LogAny::_build_log_handle at line 18 of Search/Elasticsearch/Logger/LogAny.pm
sub Search::Elasticsearch::Role::Logger::log_as; # xsub
# spent 700ns within Search::Elasticsearch::Role::Logger::log_to which was called: # once (700ns+0s) by Search::Elasticsearch::Logger::LogAny::_build_log_handle at line 15 of Search/Elasticsearch/Logger/LogAny.pm
sub Search::Elasticsearch::Role::Logger::log_to; # xsub
# spent 500ns within Search::Elasticsearch::Role::Logger::trace_as which was called: # once (500ns+0s) by Search::Elasticsearch::Logger::LogAny::_build_trace_handle at line 28 of Search/Elasticsearch/Logger/LogAny.pm
sub Search::Elasticsearch::Role::Logger::trace_as; # xsub
# spent 600ns within Search::Elasticsearch::Role::Logger::trace_to which was called: # once (600ns+0s) by Search::Elasticsearch::Logger::LogAny::_build_trace_handle at line 25 of Search/Elasticsearch/Logger/LogAny.pm
sub Search::Elasticsearch::Role::Logger::trace_to; # xsub