← Index
NYTProf Performance Profile   « block view • line view • sub view »
For t/app_dpath.t
  Run on Tue Jun 5 15:25:28 2012
Reported on Tue Jun 5 15:26:13 2012

Filename/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/Test/Deep/HashKeysOnly.pm
StatementsExecuted 68 statements in 2.93ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
311229µs343µsTest::Deep::HashKeysOnly::::descend Test::Deep::HashKeysOnly::descend
311112µs127µsTest::Deep::HashKeysOnly::::init Test::Deep::HashKeysOnly::init
11176µs93µsTest::Deep::HashKeys::::BEGIN@1 Test::Deep::HashKeys::BEGIN@1
11143µs72µsTest::Deep::HashKeys::::BEGIN@2 Test::Deep::HashKeys::BEGIN@2
11140µs285µsTest::Deep::SubHashKeysOnly::::BEGIN@114 Test::Deep::SubHashKeysOnly::BEGIN@114
11139µs440µsTest::Deep::SuperHashKeysOnly::::BEGIN@100Test::Deep::SuperHashKeysOnly::BEGIN@100
11128µs101µsTest::Deep::HashKeysOnly::::BEGIN@6 Test::Deep::HashKeysOnly::BEGIN@6
31117µs17µsTest::Deep::HashKeys::::CORE:sort Test::Deep::HashKeys::CORE:sort (opcode)
31115µs15µsTest::Deep::HashKeysOnly::::CORE:sort Test::Deep::HashKeysOnly::CORE:sort (opcode)
0000s0sTest::Deep::HashKeysOnly::::diagnostics Test::Deep::HashKeysOnly::diagnostics
0000s0sTest::Deep::HashKeysOnly::::ignoreExtra Test::Deep::HashKeysOnly::ignoreExtra
0000s0sTest::Deep::HashKeysOnly::::ignoreMissing Test::Deep::HashKeysOnly::ignoreMissing
0000s0sTest::Deep::HashKeysOnly::::nice_list Test::Deep::HashKeysOnly::nice_list
0000s0sTest::Deep::SubHashKeysOnly::::ignoreExtra Test::Deep::SubHashKeysOnly::ignoreExtra
0000s0sTest::Deep::SubHashKeysOnly::::ignoreMissing Test::Deep::SubHashKeysOnly::ignoreMissing
0000s0sTest::Deep::SuperHashKeysOnly::::ignoreExtraTest::Deep::SuperHashKeysOnly::ignoreExtra
0000s0sTest::Deep::SuperHashKeysOnly::::ignoreMissingTest::Deep::SuperHashKeysOnly::ignoreMissing
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
12116µs2110µs
# spent 93µs (76+17) within Test::Deep::HashKeys::BEGIN@1 which was called: # once (76µs+17µs) by Test::Deep::HashKeys::hashkeysonly at line 1
use strict;
# spent 93µs making 1 call to Test::Deep::HashKeys::BEGIN@1 # spent 17µs making 1 call to strict::import
22128µs2102µs
# spent 72µs (43+29) within Test::Deep::HashKeys::BEGIN@2 which was called: # once (43µs+29µs) by Test::Deep::HashKeys::hashkeysonly at line 2
use warnings;
# spent 72µs making 1 call to Test::Deep::HashKeys::BEGIN@2 # spent 29µs making 1 call to warnings::import
3
4package Test::Deep::HashKeysOnly;
5
621.79ms2174µs
# spent 101µs (28+73) within Test::Deep::HashKeysOnly::BEGIN@6 which was called: # once (28µs+73µs) by Test::Deep::HashKeys::hashkeysonly at line 6
use Test::Deep::Ref;
# spent 101µs making 1 call to Test::Deep::HashKeysOnly::BEGIN@6 # spent 73µs making 1 call to Test::Deep::Cmp::import
7
8sub init
9
# spent 127µs (112+15) within Test::Deep::HashKeysOnly::init which was called 3 times, avg 42µs/call: # 3 times (112µs+15µs) by Test::Deep::Cmp::new at line 33 of Test/Deep/Cmp.pm, avg 42µs/call
{
1033µs my $self = shift;
11
1233µs my %keys;
13315µs @keys{@_} = ();
14316µs $self->{val} = \%keys;
153103µs315µs $self->{keys} = [sort @_];
# spent 15µs making 3 calls to Test::Deep::HashKeysOnly::CORE:sort, avg 5µs/call
16}
17
18sub descend
19
# spent 343µs (229+114) within Test::Deep::HashKeysOnly::descend which was called 3 times, avg 114µs/call: # 3 times (229µs+114µs) by Test::Deep::descend at line 328 of Test/Deep.pm, avg 114µs/call
{
2036µs my $self = shift;
2133µs my $hash = shift;
22
23332µs3114µs my $data = $self->data;
# spent 114µs making 3 calls to Test::Deep::Cmp::data, avg 38µs/call
2438µs my $exp = $self->{val};
2532µs my %got;
26318µs @got{keys %$hash} = ();
27
2834µs my @missing;
2933µs my @extra;
30
31382µs while (my ($key, $value) = each %$exp)
32 {
33 if (exists $got{$key})
34 {
35 delete $got{$key};
36 }
37 else
38 {
39 push(@missing, $key);
40 }
41 }
42
4332µs my @diags;
4435µs if (@missing and (not $self->ignoreMissing))
45 {
46 push(@diags, "Missing: ".nice_list(\@missing));
47 }
48
4936µs if (%got and (not $self->ignoreExtra))
50 {
51 push(@diags, "Extra: ".nice_list([keys %got]));
52 }
53
5434µs if (@diags)
55 {
56 $data->{diag} = join("\n", @diags);
57 return 0;
58 }
59
60344µs return 1;
61}
62
63sub diagnostics
64{
65 my $self = shift;
66 my ($where, $last) = @_;
67
68 my $type = $self->{IgnoreDupes} ? "Set" : "Bag";
69
70 my $error = $last->{diag};
71 my $diag = <<EOM;
72Comparing hash keys of $where
73$error
74EOM
75
76 return $diag;
77}
78
79sub nice_list
80{
81 my $list = shift;
82
83 return join(", ",
84 (map {"'$_'"} sort @$list),
85 );
86}
87
88sub ignoreMissing
89{
90 return 0;
91}
92
93sub ignoreExtra
94{
95 return 0;
96}
97
98package Test::Deep::SuperHashKeysOnly;
99
1002292µs2841µs
# spent 440µs (39+401) within Test::Deep::SuperHashKeysOnly::BEGIN@100 which was called: # once (39µs+401µs) by Test::Deep::HashKeys::hashkeysonly at line 100
use base 'Test::Deep::HashKeysOnly';
# spent 440µs making 1 call to Test::Deep::SuperHashKeysOnly::BEGIN@100 # spent 401µs making 1 call to base::import
101
102sub ignoreMissing
103{
104 return 0;
105}
106
107sub ignoreExtra
108{
109 return 1;
110}
111
112package Test::Deep::SubHashKeysOnly;
113
1142241µs2530µs
# spent 285µs (40+245) within Test::Deep::SubHashKeysOnly::BEGIN@114 which was called: # once (40µs+245µs) by Test::Deep::HashKeys::hashkeysonly at line 114
use base 'Test::Deep::HashKeysOnly';
# spent 285µs making 1 call to Test::Deep::SubHashKeysOnly::BEGIN@114 # spent 245µs making 1 call to base::import
115
116sub ignoreMissing
117{
118 return 1;
119}
120
121sub ignoreExtra
122{
123 return 0;
124}
125
12618µs1;
 
# spent 17µs within Test::Deep::HashKeys::CORE:sort which was called 3 times, avg 6µs/call: # 3 times (17µs+0s) by Test::Deep::HashKeys::init at line 15 of Test/Deep/HashKeys.pm, avg 6µs/call
sub Test::Deep::HashKeys::CORE:sort; # opcode
# spent 15µs within Test::Deep::HashKeysOnly::CORE:sort which was called 3 times, avg 5µs/call: # 3 times (15µs+0s) by Test::Deep::HashKeysOnly::init at line 15, avg 5µs/call
sub Test::Deep::HashKeysOnly::CORE:sort; # opcode