← Index
NYTProf Performance Profile   « line view »
For starman worker -M FindBin --max-requests 50 --workers 2 --user=kohadev-koha --group kohadev-koha --pid /var/run/koha/kohadev/plack.pid --daemonize --access-log /var/log/koha/kohadev/plack.log --error-log /var/log/koha/kohadev/plack-error.log -E deployment --socket /var/run/koha/kohadev/plack.sock /etc/koha/sites/kohadev/plack.psgi
  Run on Fri Jan 8 13:01:18 2016
Reported on Fri Jan 8 13:01:35 2016

Filename/usr/share/perl5/DBIx/Class/Relationship/HasOne.pm
StatementsExecuted 199 statements in 1.57ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11113.90ms4.29msDBIx::Class::Relationship::HasOne::::_validate_has_one_conditionDBIx::Class::Relationship::HasOne::_validate_has_one_condition
1111181µs5.98msDBIx::Class::Relationship::HasOne::::_has_oneDBIx::Class::Relationship::HasOne::_has_one
1111667µs6.05msDBIx::Class::Relationship::HasOne::::might_haveDBIx::Class::Relationship::HasOne::might_have
111136µs36µsDBIx::Class::Relationship::HasOne::::CORE:matchDBIx::Class::Relationship::HasOne::CORE:match (opcode)
11115µs24µsDBIx::Class::Relationship::HasOne::::BEGIN@4DBIx::Class::Relationship::HasOne::BEGIN@4
11111µs60µsDBIx::Class::Relationship::HasOne::::BEGIN@6DBIx::Class::Relationship::HasOne::BEGIN@6
1118µs39µsDBIx::Class::Relationship::HasOne::::BEGIN@7DBIx::Class::Relationship::HasOne::BEGIN@7
1118µs14µsDBIx::Class::Relationship::HasOne::::BEGIN@5DBIx::Class::Relationship::HasOne::BEGIN@5
1117µs119µsDBIx::Class::Relationship::HasOne::::BEGIN@8DBIx::Class::Relationship::HasOne::BEGIN@8
0000s0sDBIx::Class::Relationship::HasOne::::__ANON__[:42]DBIx::Class::Relationship::HasOne::__ANON__[:42]
0000s0sDBIx::Class::Relationship::HasOne::::__ANON__[:48]DBIx::Class::Relationship::HasOne::__ANON__[:48]
0000s0sDBIx::Class::Relationship::HasOne::::has_oneDBIx::Class::Relationship::HasOne::has_one
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package # hide from PAUSE
2 DBIx::Class::Relationship::HasOne;
3
4242µs232µs
# spent 24µs (15+9) within DBIx::Class::Relationship::HasOne::BEGIN@4 which was called: # once (15µs+9µs) by Class::C3::Componentised::ensure_class_loaded at line 4
use strict;
# spent 24µs making 1 call to DBIx::Class::Relationship::HasOne::BEGIN@4 # spent 8µs making 1 call to strict::import
5232µs220µs
# spent 14µs (8+6) within DBIx::Class::Relationship::HasOne::BEGIN@5 which was called: # once (8µs+6µs) by Class::C3::Componentised::ensure_class_loaded at line 5
use warnings;
# spent 14µs making 1 call to DBIx::Class::Relationship::HasOne::BEGIN@5 # spent 6µs making 1 call to warnings::import
6227µs2109µs
# spent 60µs (11+49) within DBIx::Class::Relationship::HasOne::BEGIN@6 which was called: # once (11µs+49µs) by Class::C3::Componentised::ensure_class_loaded at line 6
use DBIx::Class::Carp;
# spent 60µs making 1 call to DBIx::Class::Relationship::HasOne::BEGIN@6 # spent 49µs making 1 call to DBIx::Class::Carp::import
7257µs269µs
# spent 39µs (8+30) within DBIx::Class::Relationship::HasOne::BEGIN@7 which was called: # once (8µs+30µs) by Class::C3::Componentised::ensure_class_loaded at line 7
use Try::Tiny;
# spent 39µs making 1 call to DBIx::Class::Relationship::HasOne::BEGIN@7 # spent 30µs making 1 call to Exporter::import
82793µs2231µs
# spent 119µs (7+112) within DBIx::Class::Relationship::HasOne::BEGIN@8 which was called: # once (7µs+112µs) by Class::C3::Componentised::ensure_class_loaded at line 8
use namespace::clean;
# spent 119µs making 1 call to DBIx::Class::Relationship::HasOne::BEGIN@8 # spent 112µs making 1 call to namespace::clean::import
9
1012µsour %_pod_inherit_config =
11 (
12 class_map => { 'DBIx::Class::Relationship::HasOne' => 'DBIx::Class::Relationship' }
13 );
14
15
# spent 6.05ms (67µs+5.98) within DBIx::Class::Relationship::HasOne::might_have which was called 11 times, avg 550µs/call: # once (3µs+3.75ms) by Class::C3::Componentised::ensure_class_loaded at line 496 of Koha/Schema/Result/Item.pm # once (10µs+273µs) by Class::C3::Componentised::ensure_class_loaded at line 248 of Koha/Schema/Result/Category.pm # once (6µs+272µs) by Class::C3::Componentised::ensure_class_loaded at line 551 of Koha/Schema/Result/Item.pm # once (8µs+259µs) by Class::C3::Componentised::ensure_class_loaded at line 367 of Koha/Schema/Result/Aqorder.pm # once (2µs+262µs) by Class::C3::Componentised::ensure_class_loaded at line 382 of Koha/Schema/Result/Aqorder.pm # once (8µs+222µs) by Class::C3::Componentised::ensure_class_loaded at line 466 of Koha/Schema/Result/Item.pm # once (8µs+220µs) by Class::C3::Componentised::ensure_class_loaded at line 393 of Koha/Schema/Result/Branch.pm # once (8µs+220µs) by Class::C3::Componentised::ensure_class_loaded at line 160 of Koha/Schema/Result/Itemtype.pm # once (9µs+193µs) by Class::C3::Componentised::ensure_class_loaded at line 981 of Koha/Schema/Result/Borrower.pm # once (2µs+159µs) by Class::C3::Componentised::ensure_class_loaded at line 566 of Koha/Schema/Result/Item.pm # once (2µs+157µs) by Class::C3::Componentised::ensure_class_loaded at line 626 of Koha/Schema/Result/Item.pm
sub might_have {
161180µs115.98ms shift->_has_one('LEFT' => @_);
# spent 5.98ms making 11 calls to DBIx::Class::Relationship::HasOne::_has_one, avg 544µs/call
17}
18
19sub has_one {
20 shift->_has_one(undef() => @_);
21}
22
23
# spent 5.98ms (181µs+5.80) within DBIx::Class::Relationship::HasOne::_has_one which was called 11 times, avg 544µs/call: # 11 times (181µs+5.80ms) by DBIx::Class::Relationship::HasOne::might_have at line 16, avg 544µs/call
sub _has_one {
24119µs my ($class, $join_type, $rel, $f_class, $cond, $attrs) = @_;
25115µs unless (ref $cond) {
26 my $pri = $class->result_source_instance->_single_pri_col_or_die;
27
28 my ($f_key,$guess,$f_rsrc);
29 if (defined $cond && length $cond) {
30 $f_key = $cond;
31 $guess = "caller specified foreign key '$f_key'";
32 }
33 else {
34 # at this point we need to load the foreigner, expensive or not
35 $class->ensure_class_loaded($f_class);
36
37 $f_rsrc = try {
38 my $r = $f_class->result_source_instance;
39 die "There got to be some columns by now... (exception caught and rewritten by catch below)"
40 unless $r->columns;
41 $r;
42 }
43 catch {
44 $class->throw_exception(
45 "Foreign class '$f_class' does not seem to be a Result class "
46 . "(or it simply did not load entirely due to a circular relation chain)"
47 );
48 };
49
50 if ($f_rsrc->has_column($rel)) {
51 $f_key = $rel;
52 $guess = "using given relationship name '$rel' as foreign key column name";
53 }
54 else {
55 $f_key = $f_rsrc->_single_pri_col_or_die;
56 $guess = "using primary key of foreign class for foreign key";
57 }
58 }
59
60# FIXME - this check needs to be moved to schema-composition time...
61# # only perform checks if the far side was not preloaded above *AND*
62# # appears to have been loaded by something else (has a rsrc_instance)
63# if (! $f_rsrc and $f_rsrc = try { $f_class->result_source_instance }) {
64# $class->throw_exception(
65# "No such column '$f_key' on foreign class ${f_class} ($guess)"
66# ) if !$f_rsrc->has_column($f_key);
67# }
68
69 $cond = { "foreign.${f_key}" => "self.${pri}" };
70 }
711155µs114.29ms $class->_validate_has_one_condition($cond);
# spent 4.29ms making 11 calls to DBIx::Class::Relationship::HasOne::_validate_has_one_condition, avg 390µs/call
72
73119µs my $default_cascade = ref $cond eq 'CODE' ? 0 : 1;
74
75 $class->add_relationship($rel, $f_class,
76 $cond,
77 { accessor => 'single',
78 cascade_update => $default_cascade,
79 cascade_delete => $default_cascade,
80 is_depends_on => 0,
81 ($join_type ? ('join_type' => $join_type) : ()),
821168µs111.52ms %{$attrs || {}} });
# spent 1.52ms making 11 calls to DBIx::Class::ResultSourceProxy::add_relationship, avg 138µs/call
831126µs 1;
84}
85
86
# spent 4.29ms (3.90+385µs) within DBIx::Class::Relationship::HasOne::_validate_has_one_condition which was called 11 times, avg 390µs/call: # 11 times (3.90ms+385µs) by DBIx::Class::Relationship::HasOne::_has_one at line 71, avg 390µs/call
sub _validate_has_one_condition {
87114µs my ($class, $cond ) = @_;
88
891113µs return if $ENV{DBIC_DONT_VALIDATE_RELS};
90116µs return unless 'HASH' eq ref $cond;
911137µs foreach my $foreign_id ( keys %$cond ) {
92115µs my $self_id = $cond->{$foreign_id};
93
94 # we can ignore a bad $self_id because add_relationship handles this
95 # exception
961170µs1136µs return unless $self_id =~ /^self\.(.*)$/;
# spent 36µs making 11 calls to DBIx::Class::Relationship::HasOne::CORE:match, avg 3µs/call
97
981121µs my $key = $1;
9911101µs11184µs $class->throw_exception("Defining rel on ${class} that includes '$key' but no such column defined here yet")
# spent 184µs making 11 calls to DBIx::Class::ResultSourceProxy::has_column, avg 17µs/call
100 unless $class->has_column($key);
1011191µs11165µs my $column_info = $class->column_info($key);
# spent 165µs making 11 calls to DBIx::Class::ResultSourceProxy::column_info, avg 15µs/call
1021117µs if ( $column_info->{is_nullable} ) {
103 carp(qq'"might_have/has_one" must not be on columns with is_nullable set to true ($class/$key). This might indicate an incorrect use of those relationship helpers instead of belongs_to.');
104 }
105 }
106}
107
10813µs1145µs1;
# spent 145µs making 1 call to B::Hooks::EndOfScope::XS::__ANON__
 
# spent 36µs within DBIx::Class::Relationship::HasOne::CORE:match which was called 11 times, avg 3µs/call: # 11 times (36µs+0s) by DBIx::Class::Relationship::HasOne::_validate_has_one_condition at line 96, avg 3µs/call
sub DBIx::Class::Relationship::HasOne::CORE:match; # opcode