Profile of DBIx/Class/Storage/DBI/Cursor.pm

← Index
NYTProf Performance Profile «block view•line view•sub view»
For xt/tapper-mcp-scheduler-with-db-longrun.t
Run on Tue May 22 17:18:39 2012
Reported on Tue May 22 17:23:19 2012

Filename | /2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Storage/DBI/Cursor.pm
Statements | Executed 103926 statements in 449ms

Subroutines
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
4273 | 1 | 1 | 117ms | 4.59s | DBIx::Class::Storage::DBI::Cursor::::_dbh_nextDBIx::Class::Storage::DBI::Cursor::_dbh_next
4699 | 1 | 1 | 52.6ms | 52.6ms | DBIx::Class::Storage::DBI::Cursor::::newDBIx::Class::Storage::DBI::Cursor::new
4273 | 3 | 3 | 45.2ms | 4.92s | DBIx::Class::Storage::DBI::Cursor::::nextDBIx::Class::Storage::DBI::Cursor::next
1610 | 1 | 1 | 39.1ms | 2.21s | DBIx::Class::Storage::DBI::Cursor::::_dbh_allDBIx::Class::Storage::DBI::Cursor::_dbh_all
4699 | 22 | 9 | 39.1ms | 91.8ms | DBIx::Class::Storage::DBI::Cursor::::DESTROYDBIx::Class::Storage::DBI::Cursor::DESTROY
5883 | 2 | 1 | 19.9ms | 19.9ms | DBIx::Class::Storage::DBI::Cursor::::_check_dbh_genDBIx::Class::Storage::DBI::Cursor::_check_dbh_gen
1610 | 1 | 1 | 19.9ms | 2.34s | DBIx::Class::Storage::DBI::Cursor::::allDBIx::Class::Storage::DBI::Cursor::all
2100 | 1 | 1 | 12.1ms | 18.5ms | DBIx::Class::Storage::DBI::Cursor::::__ANON__[:182]DBIx::Class::Storage::DBI::Cursor::__ANON__[:182]
148 | 1 | 1 | 1.17ms | 1.80ms | DBIx::Class::Storage::DBI::Cursor::::resetDBIx::Class::Storage::DBI::Cursor::reset
148 | 1 | 1 | 637µs | 638µs | DBIx::Class::Storage::DBI::Cursor::::_soft_resetDBIx::Class::Storage::DBI::Cursor::_soft_reset
1 | 1 | 1 | 19µs | 24µs | DBIx::Class::Storage::DBI::Cursor::::BEGIN@3DBIx::Class::Storage::DBI::Cursor::BEGIN@3
1 | 1 | 1 | 10µs | 26µs | DBIx::Class::Storage::DBI::Cursor::::BEGIN@4DBIx::Class::Storage::DBI::Cursor::BEGIN@4
1 | 1 | 1 | 9µs | 60µs | DBIx::Class::Storage::DBI::Cursor::::BEGIN@8DBIx::Class::Storage::DBI::Cursor::BEGIN@8
1 | 1 | 1 | 9µs | 198µs | DBIx::Class::Storage::DBI::Cursor::::BEGIN@9DBIx::Class::Storage::DBI::Cursor::BEGIN@9
1 | 1 | 1 | 8µs | 406µs | DBIx::Class::Storage::DBI::Cursor::::BEGIN@6DBIx::Class::Storage::DBI::Cursor::BEGIN@6
0 | 0 | 0 | 0s | 0s | DBIx::Class::Storage::DBI::Cursor::::__ANON__[:156]DBIx::Class::Storage::DBI::Cursor::__ANON__[:156]

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | package DBIx::Class::Storage::DBI::Cursor;
2 |  |  |  |  |
3 | 3 | 23µs | 2 | 29µs | # spent 24µs (19+5) within DBIx::Class::Storage::DBI::Cursor::BEGIN@3 which was called: # once (19µs+5µs) by Class::C3::Componentised::ensure_class_loaded at line 3 use strict; # spent 24µs making 1 call to DBIx::Class::Storage::DBI::Cursor::BEGIN@3 # spent 5µs making 1 call to strict::import
4 | 3 | 27µs | 2 | 42µs | # spent 26µs (10+16) within DBIx::Class::Storage::DBI::Cursor::BEGIN@4 which was called: # once (10µs+16µs) by Class::C3::Componentised::ensure_class_loaded at line 4 use warnings; # spent 26µs making 1 call to DBIx::Class::Storage::DBI::Cursor::BEGIN@4 # spent 16µs making 1 call to warnings::import
5 |  |  |  |  |
6 | 3 | 22µs | 2 | 804µs | # spent 406µs (8+398) within DBIx::Class::Storage::DBI::Cursor::BEGIN@6 which was called: # once (8µs+398µs) by Class::C3::Componentised::ensure_class_loaded at line 6 use base qw/DBIx::Class::Cursor/; # spent 406µs making 1 call to DBIx::Class::Storage::DBI::Cursor::BEGIN@6 # spent 398µs making 1 call to base::import
7 |  |  |  |  |
8 | 3 | 22µs | 2 | 110µs | # spent 60µs (9+50) within DBIx::Class::Storage::DBI::Cursor::BEGIN@8 which was called: # once (9µs+50µs) by Class::C3::Componentised::ensure_class_loaded at line 8 use Try::Tiny; # spent 60µs making 1 call to DBIx::Class::Storage::DBI::Cursor::BEGIN@8 # spent 50µs making 1 call to Exporter::import
9 | 3 | 564µs | 2 | 387µs | # spent 198µs (9+189) within DBIx::Class::Storage::DBI::Cursor::BEGIN@9 which was called: # once (9µs+189µs) by Class::C3::Componentised::ensure_class_loaded at line 9 use namespace::clean; # spent 198µs making 1 call to DBIx::Class::Storage::DBI::Cursor::BEGIN@9 # spent 189µs making 1 call to namespace::clean::import
10 |  |  |  |  |
11 | 1 | 15µs | 1 | 396µs | __PACKAGE__->mk_group_accessors('simple' => # spent 396µs making 1 call to Class::Accessor::Grouped::mk_group_accessors
12 |  |  |  |  | qw/sth storage args pos attrs _dbh_gen/
13 |  |  |  |  | );
14 |  |  |  |  |
15 |  |  |  |  | =head1 NAME
16 |  |  |  |  |
17 |  |  |  |  | DBIx::Class::Storage::DBI::Cursor - Object representing a query cursor on a
18 |  |  |  |  | resultset.
19 |  |  |  |  |
20 |  |  |  |  | =head1 SYNOPSIS
21 |  |  |  |  |
22 |  |  |  |  | my $cursor = $schema->resultset('CD')->cursor();
23 |  |  |  |  | my $first_cd = $cursor->next;
24 |  |  |  |  |
25 |  |  |  |  | =head1 DESCRIPTION
26 |  |  |  |  |
27 |  |  |  |  | A Cursor represents a query cursor on a L<DBIx::Class::ResultSet> object. It
28 |  |  |  |  | allows for traversing the result set with L</next>, retrieving all results with
29 |  |  |  |  | L</all> and resetting the cursor with L</reset>.
30 |  |  |  |  |
31 |  |  |  |  | Usually, you would use the cursor methods built into L<DBIx::Class::ResultSet>
32 |  |  |  |  | to traverse it. See L<DBIx::Class::ResultSet/next>,
33 |  |  |  |  | L<DBIx::Class::ResultSet/reset> and L<DBIx::Class::ResultSet/all> for more
34 |  |  |  |  | information.
35 |  |  |  |  |
36 |  |  |  |  | =head1 METHODS
37 |  |  |  |  |
38 |  |  |  |  | =head2 new
39 |  |  |  |  |
40 |  |  |  |  | Returns a new L<DBIx::Class::Storage::DBI::Cursor> object.
41 |  |  |  |  |
42 |  |  |  |  | =cut
43 |  |  |  |  |
44 |  |  |  |  | # spent 52.6ms within DBIx::Class::Storage::DBI::Cursor::new which was called 4699 times, avg 11µs/call: # 4699 times (52.6ms+0s) by DBIx::Class::Storage::DBI::select at line 2213 of DBIx/Class/Storage/DBI.pm, avg 11µs/call sub new {
45 | 18796 | 57.5ms |  |  | my ($class, $storage, $args, $attrs) = @_;
46 |  |  |  |  | $class = ref $class if ref $class;
47 |  |  |  |  |
48 |  |  |  |  | my $new = {
49 |  |  |  |  | storage => $storage,
50 |  |  |  |  | args => $args,
51 |  |  |  |  | pos => 0,
52 |  |  |  |  | attrs => $attrs,
53 |  |  |  |  | _dbh_gen => $storage->{_dbh_gen},
54 |  |  |  |  | };
55 |  |  |  |  |
56 |  |  |  |  | return bless ($new, $class);
57 |  |  |  |  | }
58 |  |  |  |  |
59 |  |  |  |  | =head2 next
60 |  |  |  |  |
61 |  |  |  |  | =over 4
62 |  |  |  |  |
63 |  |  |  |  | =item Arguments: none
64 |  |  |  |  |
65 |  |  |  |  | =item Return Value: \@row_columns
66 |  |  |  |  |
67 |  |  |  |  | =back
68 |  |  |  |  |
69 |  |  |  |  | Advances the cursor to the next row and returns an array of column
70 |  |  |  |  | values (the result of L<DBI/fetchrow_array> method).
71 |  |  |  |  |
72 |  |  |  |  | =cut
73 |  |  |  |  |
74 |  |  |  |  | # spent 4.59s (117ms+4.47) within DBIx::Class::Storage::DBI::Cursor::_dbh_next which was called 4273 times, avg 1.07ms/call: # 4273 times (117ms+4.47s) by DBIx::Class::Storage::DBI::__ANON__[/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Storage/DBI.pm:790] at line 789 of DBIx/Class/Storage/DBI.pm, avg 1.07ms/call sub _dbh_next {
75 | 34178 | 116ms |  |  | my ($storage, $dbh, $self) = @_;
76 |  |  |  |  |
77 |  |  | 4273 | 13.9ms | $self->_check_dbh_gen; # spent 13.9ms making 4273 calls to DBIx::Class::Storage::DBI::Cursor::_check_dbh_gen, avg 3µs/call
78 |  |  |  |  | if (
79 |  |  |  |  | $self->{attrs}{software_limit}
80 |  |  |  |  | && $self->{attrs}{rows}
81 |  |  |  |  | && $self->{pos} >= $self->{attrs}{rows}
82 |  |  |  |  | ) {
83 |  |  |  |  | $self->sth->finish if $self->sth->{Active};
84 |  |  |  |  | $self->sth(undef);
85 |  |  |  |  | $self->{done} = 1;
86 |  |  |  |  | }
87 |  |  |  |  | return if $self->{done};
88 | 6176 | 36.8ms | 2 | 174µs | unless ($self->sth) { # spent 174µs making 2 calls to DBIx::Class::Storage::DBI::Cursor::sth, avg 87µs/call
89 |  |  | 3090 | 4.42s | $self->sth(($storage->_select(@{$self->{args}}))[1]); # spent 4.42s making 3089 calls to DBIx::Class::Storage::DBI::_select, avg 1.43ms/call # spent 5µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
90 |  |  |  |  | if ($self->{attrs}{software_limit}) {
91 |  |  |  |  | if (my $offset = $self->{attrs}{offset}) {
92 |  |  |  |  | $self->sth->fetch for 1 .. $offset;
93 |  |  |  |  | }
94 |  |  |  |  | }
95 |  |  |  |  | }
96 |  |  | 4272 | 39.7ms | my @row = $self->sth->fetchrow_array; # spent 39.7ms making 4271 calls to DBI::st::fetchrow_array, avg 9µs/call # spent 2µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
97 | 1974 | 1.94ms |  |  | if (@row) {
98 |  |  |  |  | $self->{pos}++;
99 |  |  |  |  | } else {
100 |  |  | 1 | 1µs | $self->sth(undef); # spent 1µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
101 |  |  |  |  | $self->{done} = 1;
102 |  |  |  |  | }
103 |  |  |  |  | return @row;
104 |  |  |  |  | }
105 |  |  |  |  |
106 |  |  |  |  | # spent 4.92s (45.2ms+4.87) within DBIx::Class::Storage::DBI::Cursor::next which was called 4273 times, avg 1.15ms/call: # 2318 times (21.2ms+2.27s) by DBIx::Class::ResultSet::next at line 1209 of DBIx/Class/ResultSet.pm, avg 990µs/call # 1954 times (23.9ms+2.60s) by DBIx::Class::ResultSetColumn::next at line 161 of DBIx/Class/ResultSetColumn.pm, avg 1.34ms/call # once (10µs+2.23ms) by DBIx::Class::Schema::Versioned::__ANON__[/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Schema/Versioned.pm:752] at line 750 of DBIx/Class/Schema/Versioned.pm sub next {
107 | 8546 | 51.6ms |  |  | my ($self) = @_;
108 |  |  | 8546 | 4.87s | $self->{storage}->dbh_do($self->can('_dbh_next'), $self); # spent 4.87s making 4273 calls to DBIx::Class::Storage::DBI::dbh_do, avg 1.14ms/call # spent 8.08ms making 4273 calls to UNIVERSAL::can, avg 2µs/call
109 |  |  |  |  | }
110 |  |  |  |  |
111 |  |  |  |  | =head2 all
112 |  |  |  |  |
113 |  |  |  |  | =over 4
114 |  |  |  |  |
115 |  |  |  |  | =item Arguments: none
116 |  |  |  |  |
117 |  |  |  |  | =item Return Value: \@row_columns+
118 |  |  |  |  |
119 |  |  |  |  | =back
120 |  |  |  |  |
121 |  |  |  |  | Returns a list of arrayrefs of column values for all rows in the
122 |  |  |  |  | L<DBIx::Class::ResultSet>.
123 |  |  |  |  |
124 |  |  |  |  | =cut
125 |  |  |  |  |
126 |  |  |  |  | # spent 2.21s (39.1ms+2.17) within DBIx::Class::Storage::DBI::Cursor::_dbh_all which was called 1610 times, avg 1.37ms/call: # 1610 times (39.1ms+2.17s) by DBIx::Class::Storage::DBI::__ANON__[/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Storage/DBI.pm:790] at line 789 of DBIx/Class/Storage/DBI.pm, avg 1.37ms/call sub _dbh_all {
127 | 9660 | 64.6ms |  |  | my ($storage, $dbh, $self) = @_;
128 |  |  |  |  |
129 |  |  | 1610 | 6.05ms | $self->_check_dbh_gen; # spent 6.05ms making 1610 calls to DBIx::Class::Storage::DBI::Cursor::_check_dbh_gen, avg 4µs/call
130 |  |  | 1 | 1µs | $self->sth->finish if $self->sth && $self->sth->{Active}; # spent 1µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
131 |  |  | 1 | 1µs | $self->sth(undef); # spent 1µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
132 |  |  | 1610 | 2.13s | my ($rv, $sth) = $storage->_select(@{$self->{args}}); # spent 2.13s making 1610 calls to DBIx::Class::Storage::DBI::_select, avg 1.33ms/call
133 |  |  | 1610 | 26.7ms | return @{$sth->fetchall_arrayref}; # spent 26.7ms making 1610 calls to DBI::st::fetchall_arrayref, avg 17µs/call
134 |  |  |  |  | }
135 |  |  |  |  |
136 |  |  |  |  | # spent 2.34s (19.9ms+2.32) within DBIx::Class::Storage::DBI::Cursor::all which was called 1610 times, avg 1.46ms/call: # 1610 times (19.9ms+2.32s) by DBIx::Class::ResultSet::all at line 1651 of DBIx/Class/ResultSet.pm, avg 1.46ms/call sub all {
137 | 4830 | 24.3ms |  |  | my ($self) = @_;
138 |  |  |  |  | if ($self->{attrs}{software_limit}
139 |  |  |  |  | && ($self->{attrs}{offset} || $self->{attrs}{rows})) {
140 |  |  |  |  | return $self->next::method;
141 |  |  |  |  | }
142 |  |  |  |  |
143 |  |  | 3220 | 2.32s | $self->{storage}->dbh_do($self->can('_dbh_all'), $self); # spent 2.32s making 1610 calls to DBIx::Class::Storage::DBI::dbh_do, avg 1.44ms/call # spent 4.09ms making 1610 calls to UNIVERSAL::can, avg 3µs/call
144 |  |  |  |  | }
145 |  |  |  |  |
146 |  |  |  |  | =head2 reset
147 |  |  |  |  |
148 |  |  |  |  | Resets the cursor to the beginning of the L<DBIx::Class::ResultSet>.
149 |  |  |  |  |
150 |  |  |  |  | =cut
151 |  |  |  |  |
152 |  |  |  |  | # spent 1.80ms (1.17+639µs) within DBIx::Class::Storage::DBI::Cursor::reset which was called 148 times, avg 12µs/call: # 148 times (1.17ms+639µs) by DBIx::Class::ResultSet::reset at line 1679 of DBIx/Class/ResultSet.pm, avg 12µs/call sub reset {
153 | 592 | 984µs |  |  | my ($self) = @_;
154 |  |  |  |  |
155 |  |  |  |  | # No need to care about failures here
156 |  |  |  |  | try { $self->sth->finish }
157 |  |  | 1 | 1µs | if $self->sth && $self->sth->{Active}; # spent 1µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
158 |  |  | 148 | 638µs | $self->_soft_reset; # spent 638µs making 148 calls to DBIx::Class::Storage::DBI::Cursor::_soft_reset, avg 4µs/call
159 |  |  |  |  | return undef;
160 |  |  |  |  | }
161 |  |  |  |  |
162 |  |  |  |  | # spent 638µs (637+700ns) within DBIx::Class::Storage::DBI::Cursor::_soft_reset which was called 148 times, avg 4µs/call: # 148 times (637µs+700ns) by DBIx::Class::Storage::DBI::Cursor::reset at line 158, avg 4µs/call sub _soft_reset {
163 | 592 | 848µs |  |  | my ($self) = @_;
164 |  |  |  |  |
165 |  |  | 1 | 700ns | $self->sth(undef); # spent 700ns making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
166 |  |  |  |  | delete $self->{done};
167 |  |  |  |  | $self->{pos} = 0;
168 |  |  |  |  | }
169 |  |  |  |  |
170 |  |  |  |  | # spent 19.9ms within DBIx::Class::Storage::DBI::Cursor::_check_dbh_gen which was called 5883 times, avg 3µs/call: # 4273 times (13.9ms+0s) by DBIx::Class::Storage::DBI::Cursor::_dbh_next at line 77, avg 3µs/call # 1610 times (6.05ms+0s) by DBIx::Class::Storage::DBI::Cursor::_dbh_all at line 129, avg 4µs/call sub _check_dbh_gen {
171 | 11766 | 28.5ms |  |  | my ($self) = @_;
172 |  |  |  |  |
173 |  |  |  |  | if($self->{_dbh_gen} != $self->{storage}->{_dbh_gen}) {
174 |  |  |  |  | $self->{_dbh_gen} = $self->{storage}->{_dbh_gen};
175 |  |  |  |  | $self->_soft_reset;
176 |  |  |  |  | }
177 |  |  |  |  | }
178 |  |  |  |  |
179 |  |  |  |  | # spent 91.8ms (39.1+52.7) within DBIx::Class::Storage::DBI::Cursor::DESTROY which was called 4699 times, avg 20µs/call: # 845 times (7.30ms+11.4ms) by DBIx::Class::ResultSet::count or Tapper::Schema::TestrunDB::Result::TestrunScheduling::fits at line 179 of Tapper/Schema/TestrunDB/Result/TestrunScheduling.pm, avg 22µs/call # 594 times (7.06ms+13.8ms) by DBIx::Class::ResultSet::count at line 154 of Tapper/Schema/TestrunDB/Result/TestrunScheduling.pm, avg 35µs/call # 477 times (1.91ms+0s) by Tapper::Schema::TestrunDB::Result::Queue::get_first_fitting at line 95 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 4µs/call # 477 times (1.83ms+0s) by Tapper::MCP::Scheduler::PrioQueue::get_first_fitting at line 90 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 4µs/call # 402 times (3.17ms+4.65ms) by DBIx::Class::ResultSet::count or Tapper::MCP::Scheduler::Controller::toggle_bandwith_color at line 44 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 19µs/call # 331 times (1.77ms+0s) by DBIx::Class::ResultSet::search at line 512 of DBIx/Class/Relationship/Base.pm, avg 5µs/call # 330 times (4.01ms+7.86ms) by DBIx::Class::ResultSet::count at line 42 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 36µs/call # 180 times (1.10ms+0s) by main::toggle_host_free at line 56 of xt/tapper-mcp-scheduler-with-db-longrun.t, avg 6µs/call # 180 times (481µs+0s) by Tapper::MCP::Scheduler::Controller::get_next_job at line 84 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 3µs/call # 180 times (445µs+0s) by Tapper::Model::free_hosts_with_features at line 78 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 2µs/call # 147 times (3.41ms+6.61ms) by DBIx::Class::ResultSet::count at line 162 of Tapper/Schema/TestrunDB/Result/Testrun.pm, avg 68µs/call # 147 times (2.01ms+3.90ms) by DBIx::Class::ResultSet::count at line 168 of Tapper/Schema/TestrunDB/Result/Testrun.pm, avg 40µs/call # 147 times (1.66ms+3.48ms) by Tapper::Schema::TestrunDB::Result::Testrun::rerun at line 133 of Tapper/Schema/TestrunDB/Result/Testrun.pm, avg 35µs/call # 147 times (1.77ms+0s) by Tapper::Schema::TestrunDB::Result::Testrun::rerun at line 96 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 12µs/call # 72 times (606µs+0s) by Tapper::MCP::Scheduler::Controller::get_next_job at line 117 of lib/Tapper/MCP/Scheduler/Controller.pm, avg 8µs/call # 34 times (444µs+864µs) by DBIx::Class::ResultSet::count at line 57 of xt/tapper-mcp-scheduler-with-db-longrun.t, avg 38µs/call # 3 times (57µs+129µs) by Try::Tiny::try at line 79 of Try/Tiny.pm, avg 62µs/call # 2 times (14µs+2µs) by Try::Tiny::try at line 84 of Try/Tiny.pm, avg 8µs/call # once (9µs+35µs) by Tapper::Model::model at line 53 of Tapper/Model.pm # once (4µs+0s) by Tapper::Schema::TestrunDB::Result::TestrunScheduling::gen_schema_functions at line 51 of Tapper/Model.pm # once (3µs+0s) by DBIx::Class::Schema::Versioned::__ANON__[/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Schema/Versioned.pm:752] at line 751 of DBIx/Class/Schema/Versioned.pm # once (3µs+0s) by Moose::Meta::Attribute::initialize_instance_slot at line 521 of Moose/Meta/Attribute.pm sub DESTROY {
180 |  |  |  |  | # None of the reasons this would die matter if we're in DESTROY anyways
181 | 4699 | 42.8ms | 4201 | 52.6ms | if (my $sth = $_[0]->sth) { # spent 48.9ms making 2100 calls to Try::Tiny::try, avg 23µs/call, recursion: max depth 1, sum of overlapping time 111µs # spent 3.81ms making 2100 calls to DBI::common::FETCH, avg 2µs/call # spent 2µs making 1 call to DBIx::Class::Storage::DBI::Cursor::sth
182 | 2100 | 22.7ms | 2100 | 6.41ms | # spent 18.5ms (12.1+6.41) within DBIx::Class::Storage::DBI::Cursor::__ANON__[/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/DBIx/Class/Storage/DBI/Cursor.pm:182] which was called 2100 times, avg 9µs/call: # 2100 times (12.1ms+6.41ms) by Try::Tiny::try at line 76 of Try/Tiny.pm, avg 9µs/call try { $sth->finish } if $sth->FETCH('Active'); # spent 6.41ms making 2100 calls to DBI::st::finish, avg 3µs/call
183 |  |  |  |  | }
184 |  |  |  |  | }
185 |  |  |  |  |
186 | 1 | 12µs | 1 | 214µs | 1; # spent 214µs making 1 call to B::Hooks::EndOfScope::__ANON__[B/Hooks/EndOfScope.pm:26]