Filename | /home/ss5/perl5/perlbrew/perls/tapper-perl/lib/site_perl/5.16.3/Test/Deep/HashKeysOnly.pm |
Statements | Executed 49 statements in 1.01ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
2 | 1 | 1 | 67µs | 83µs | descend | Test::Deep::HashKeysOnly::
2 | 1 | 1 | 43µs | 54µs | init | Test::Deep::HashKeysOnly::
1 | 1 | 1 | 22µs | 146µs | BEGIN@100 | Test::Deep::SuperHashKeysOnly::
1 | 1 | 1 | 20µs | 41µs | BEGIN@1 | Test::Deep::HashKeys::
1 | 1 | 1 | 19µs | 135µs | BEGIN@114 | Test::Deep::SubHashKeysOnly::
1 | 1 | 1 | 17µs | 24µs | BEGIN@2 | Test::Deep::HashKeys::
1 | 1 | 1 | 15µs | 40µs | BEGIN@6 | Test::Deep::HashKeysOnly::
2 | 1 | 1 | 11µs | 11µs | CORE:sort (opcode) | Test::Deep::HashKeysOnly::
0 | 0 | 0 | 0s | 0s | diagnostics | Test::Deep::HashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreExtra | Test::Deep::HashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreMissing | Test::Deep::HashKeysOnly::
0 | 0 | 0 | 0s | 0s | nice_list | Test::Deep::HashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreExtra | Test::Deep::SubHashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreMissing | Test::Deep::SubHashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreExtra | Test::Deep::SuperHashKeysOnly::
0 | 0 | 0 | 0s | 0s | ignoreMissing | Test::Deep::SuperHashKeysOnly::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | 2 | 50µs | 2 | 63µs | # spent 41µs (20+21) within Test::Deep::HashKeys::BEGIN@1 which was called:
# once (20µs+21µs) by Test::Deep::HashKeys::hashkeysonly at line 1 # spent 41µs making 1 call to Test::Deep::HashKeys::BEGIN@1
# spent 22µs making 1 call to strict::import |
2 | 2 | 64µs | 2 | 30µs | # spent 24µs (17+7) within Test::Deep::HashKeys::BEGIN@2 which was called:
# once (17µs+7µs) by Test::Deep::HashKeys::hashkeysonly at line 2 # spent 24µs making 1 call to Test::Deep::HashKeys::BEGIN@2
# spent 7µs making 1 call to warnings::import |
3 | |||||
4 | package Test::Deep::HashKeysOnly; | ||||
5 | |||||
6 | 2 | 554µs | 2 | 66µs | # spent 40µs (15+25) within Test::Deep::HashKeysOnly::BEGIN@6 which was called:
# once (15µs+25µs) by Test::Deep::HashKeys::hashkeysonly at line 6 # spent 40µs making 1 call to Test::Deep::HashKeysOnly::BEGIN@6
# spent 25µs making 1 call to Test::Deep::Cmp::import |
7 | |||||
8 | sub init | ||||
9 | # spent 54µs (43+11) within Test::Deep::HashKeysOnly::init which was called 2 times, avg 27µs/call:
# 2 times (43µs+11µs) by Test::Deep::Cmp::new at line 33 of Test/Deep/Cmp.pm, avg 27µs/call | ||||
10 | 2 | 1µs | my $self = shift; | ||
11 | |||||
12 | 2 | 900ns | my %keys; | ||
13 | 2 | 9µs | @keys{@_} = (); | ||
14 | 2 | 4µs | $self->{val} = \%keys; | ||
15 | 2 | 42µs | 2 | 11µs | $self->{keys} = [sort @_]; # spent 11µs making 2 calls to Test::Deep::HashKeysOnly::CORE:sort, avg 5µs/call |
16 | } | ||||
17 | |||||
18 | sub descend | ||||
19 | # spent 83µs (67+17) within Test::Deep::HashKeysOnly::descend which was called 2 times, avg 42µs/call:
# 2 times (67µs+17µs) by Test::Deep::descend at line 344 of Test/Deep.pm, avg 42µs/call | ||||
20 | 2 | 900ns | my $self = shift; | ||
21 | 2 | 700ns | my $hash = shift; | ||
22 | |||||
23 | 2 | 7µs | 2 | 17µs | my $data = $self->data; # spent 17µs making 2 calls to Test::Deep::Cmp::data, avg 8µs/call |
24 | 2 | 1µs | my $exp = $self->{val}; | ||
25 | 2 | 500ns | my %got; | ||
26 | 2 | 10µs | @got{keys %$hash} = (); | ||
27 | |||||
28 | 2 | 500ns | my @missing; | ||
29 | 2 | 400ns | my @extra; | ||
30 | |||||
31 | 2 | 32µ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 | |||||
43 | 2 | 500ns | my @diags; | ||
44 | 2 | 800ns | if (@missing and (not $self->ignoreMissing)) | ||
45 | { | ||||
46 | push(@diags, "Missing: ".nice_list(\@missing)); | ||||
47 | } | ||||
48 | |||||
49 | 2 | 900ns | if (%got and (not $self->ignoreExtra)) | ||
50 | { | ||||
51 | push(@diags, "Extra: ".nice_list([keys %got])); | ||||
52 | } | ||||
53 | |||||
54 | 2 | 500ns | if (@diags) | ||
55 | { | ||||
56 | $data->{diag} = join("\n", @diags); | ||||
57 | return 0; | ||||
58 | } | ||||
59 | |||||
60 | 2 | 9µs | return 1; | ||
61 | } | ||||
62 | |||||
63 | sub 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; | ||||
72 | Comparing hash keys of $where | ||||
73 | $error | ||||
74 | EOM | ||||
75 | |||||
76 | return $diag; | ||||
77 | } | ||||
78 | |||||
79 | sub nice_list | ||||
80 | { | ||||
81 | my $list = shift; | ||||
82 | |||||
83 | return join(", ", | ||||
84 | (map {"'$_'"} sort @$list), | ||||
85 | ); | ||||
86 | } | ||||
87 | |||||
88 | sub ignoreMissing | ||||
89 | { | ||||
90 | return 0; | ||||
91 | } | ||||
92 | |||||
93 | sub ignoreExtra | ||||
94 | { | ||||
95 | return 0; | ||||
96 | } | ||||
97 | |||||
98 | package Test::Deep::SuperHashKeysOnly; | ||||
99 | |||||
100 | 2 | 124µs | 2 | 271µs | # spent 146µs (22+125) within Test::Deep::SuperHashKeysOnly::BEGIN@100 which was called:
# once (22µs+125µs) by Test::Deep::HashKeys::hashkeysonly at line 100 # spent 146µs making 1 call to Test::Deep::SuperHashKeysOnly::BEGIN@100
# spent 125µs making 1 call to base::import |
101 | |||||
102 | sub ignoreMissing | ||||
103 | { | ||||
104 | return 0; | ||||
105 | } | ||||
106 | |||||
107 | sub ignoreExtra | ||||
108 | { | ||||
109 | return 1; | ||||
110 | } | ||||
111 | |||||
112 | package Test::Deep::SubHashKeysOnly; | ||||
113 | |||||
114 | 2 | 91µs | 2 | 251µs | # spent 135µs (19+116) within Test::Deep::SubHashKeysOnly::BEGIN@114 which was called:
# once (19µs+116µs) by Test::Deep::HashKeys::hashkeysonly at line 114 # spent 135µs making 1 call to Test::Deep::SubHashKeysOnly::BEGIN@114
# spent 116µs making 1 call to base::import |
115 | |||||
116 | sub ignoreMissing | ||||
117 | { | ||||
118 | return 1; | ||||
119 | } | ||||
120 | |||||
121 | sub ignoreExtra | ||||
122 | { | ||||
123 | return 0; | ||||
124 | } | ||||
125 | |||||
126 | 1 | 4µs | 1; | ||
# spent 11µs within Test::Deep::HashKeysOnly::CORE:sort which was called 2 times, avg 5µs/call:
# 2 times (11µs+0s) by Test::Deep::HashKeysOnly::init at line 15, avg 5µs/call |