← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:23:09 2010

File /usr/local/lib/perl5/5.10.1/Test/Deep/HashKeysOnly.pm
Statements Executed 54
Statement Execution Time 615µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
21137µs56µsTest::Deep::HashKeysOnly::::descend Test::Deep::HashKeysOnly::descend
21120µs23µsTest::Deep::HashKeysOnly::::init Test::Deep::HashKeysOnly::init
11118µs22µsTest::Deep::HashKeys::::BEGIN@1 Test::Deep::HashKeys::BEGIN@1
1119µs20µsTest::Deep::HashKeys::::BEGIN@2 Test::Deep::HashKeys::BEGIN@2
1119µs97µsTest::Deep::SuperHashKeysOnly::::BEGIN@100Test::Deep::SuperHashKeysOnly::BEGIN@100
1119µs54µsTest::Deep::SubHashKeysOnly::::BEGIN@114 Test::Deep::SubHashKeysOnly::BEGIN@114
1117µs21µsTest::Deep::HashKeysOnly::::BEGIN@6 Test::Deep::HashKeysOnly::BEGIN@6
2123µs3µ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
1332µs226µs
# spent 22µs (18+4) within Test::Deep::HashKeys::BEGIN@1 which was called # once (18µs+4µs) by Test::Deep::HashKeys::hashkeysonly at line 1
use strict;
# spent 22µs making 1 call to Test::Deep::HashKeys::BEGIN@1 # spent 4µs making 1 call to strict::import
2329µs232µs
# spent 20µs (9+12) within Test::Deep::HashKeys::BEGIN@2 which was called # once (9µs+12µs) by Test::Deep::HashKeys::hashkeysonly at line 2
use warnings;
# spent 20µs making 1 call to Test::Deep::HashKeys::BEGIN@2 # spent 12µs making 1 call to warnings::import
3
4package Test::Deep::HashKeysOnly;
5
63356µs235µs
# spent 21µs (7+14) within Test::Deep::HashKeysOnly::BEGIN@6 which was called # once (7µs+14µs) by Test::Deep::HashKeys::hashkeysonly at line 6
use Test::Deep::Ref;
# spent 21µs making 1 call to Test::Deep::HashKeysOnly::BEGIN@6 # spent 14µs making 1 call to Test::Deep::Cmp::import
7
8sub init
9
# spent 23µs (20+3) within Test::Deep::HashKeysOnly::init which was called 2 times, avg 12µs/call: # 2 times (20µs+3µs) by Test::Deep::Cmp::new at line 32 of Test/Deep/Cmp.pm, avg 12µs/call
{
102300ns my $self = shift;
11
122300ns my %keys;
1323µs @keys{@_} = ();
1422µs $self->{val} = \%keys;
15218µs23µs $self->{keys} = [sort @_];
# spent 3µs making 2 calls to Test::Deep::HashKeysOnly::CORE:sort, avg 1µs/call
16}
17
18sub descend
19
# spent 56µs (37+19) within Test::Deep::HashKeysOnly::descend which was called 2 times, avg 28µs/call: # 2 times (37µs+19µs) by Test::Deep::descend at line 312 of Test/Deep.pm, avg 28µs/call
{
202500ns my $self = shift;
212400ns my $hash = shift;
22
2325µs219µs my $data = $self->data;
# spent 19µs making 2 calls to Test::Deep::Cmp::data, avg 9µs/call
242900ns my $exp = $self->{val};
252300ns my %got;
2625µs @got{keys %$hash} = ();
27
282400ns my @missing;
292100ns my @extra;
30
31214µ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
432100ns my @diags;
442500ns if (@missing and (not $self->ignoreMissing))
45 {
46 push(@diags, "Missing: ".nice_list(\@missing));
47 }
48
492400ns if (%got and (not $self->ignoreExtra))
50 {
51 push(@diags, "Extra: ".nice_list([keys %got]));
52 }
53
542200ns if (@diags)
55 {
56 $data->{diag} = join("\n", @diags);
57 return 0;
58 }
59
6026µ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
100374µs2185µs
# spent 97µs (9+88) within Test::Deep::SuperHashKeysOnly::BEGIN@100 which was called # once (9µs+88µs) by Test::Deep::HashKeys::hashkeysonly at line 100
use base 'Test::Deep::HashKeysOnly';
# spent 97µs making 1 call to Test::Deep::SuperHashKeysOnly::BEGIN@100 # spent 88µ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
114364µs2100µs
# spent 54µs (9+46) within Test::Deep::SubHashKeysOnly::BEGIN@114 which was called # once (9µs+46µs) by Test::Deep::HashKeys::hashkeysonly at line 114
use base 'Test::Deep::HashKeysOnly';
# spent 54µs making 1 call to Test::Deep::SubHashKeysOnly::BEGIN@114 # spent 46µs making 1 call to base::import
115
116sub ignoreMissing
117{
118 return 1;
119}
120
121sub ignoreExtra
122{
123 return 0;
124}
125
12613µs1;
# spent 3µs within Test::Deep::HashKeysOnly::CORE:sort which was called 2 times, avg 1µs/call: # 2 times (3µs+0s) by Test::Deep::HashKeysOnly::init at line 15 of Test/Deep/HashKeysOnly.pm, avg 1µs/call
sub Test::Deep::HashKeysOnly::CORE:sort; # xsub