Filename | /home/micha/.plenv/versions/5.38.2/lib/perl5/site_perl/5.38.2/Test2/Util/ExternalMeta.pm |
Statements | Executed 43 statements in 334µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
3 | 3 | 1 | 14µs | 17µs | meta | Test2::Util::ExternalMeta::
1 | 1 | 1 | 10µs | 11µs | BEGIN@2 | Test2::Util::ExternalMeta::
1 | 1 | 1 | 7µs | 7µs | BEGIN@13 | Test2::Util::ExternalMeta::
3 | 1 | 1 | 4µs | 4µs | validate_key | Test2::Util::ExternalMeta::
1 | 1 | 1 | 4µs | 19µs | BEGIN@8 | Test2::Util::ExternalMeta::
1 | 1 | 1 | 3µs | 20µs | BEGIN@3 | Test2::Util::ExternalMeta::
0 | 0 | 0 | 0s | 0s | delete_meta | Test2::Util::ExternalMeta::
0 | 0 | 0 | 0s | 0s | get_meta | Test2::Util::ExternalMeta::
0 | 0 | 0 | 0s | 0s | set_meta | Test2::Util::ExternalMeta::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Test2::Util::ExternalMeta; | ||||
2 | 2 | 18µs | 2 | 13µs | # spent 11µs (10+2) within Test2::Util::ExternalMeta::BEGIN@2 which was called:
# once (10µs+2µs) by Test2::Hub::BEGIN@14 at line 2 # spent 11µs making 1 call to Test2::Util::ExternalMeta::BEGIN@2
# spent 2µs making 1 call to strict::import |
3 | 2 | 27µs | 2 | 36µs | # spent 20µs (3+16) within Test2::Util::ExternalMeta::BEGIN@3 which was called:
# once (3µs+16µs) by Test2::Hub::BEGIN@14 at line 3 # spent 20µs making 1 call to Test2::Util::ExternalMeta::BEGIN@3
# spent 16µs making 1 call to warnings::import |
4 | |||||
5 | 1 | 400ns | our $VERSION = '1.302198'; | ||
6 | |||||
7 | |||||
8 | 2 | 46µs | 2 | 34µs | # spent 19µs (4+15) within Test2::Util::ExternalMeta::BEGIN@8 which was called:
# once (4µs+15µs) by Test2::Hub::BEGIN@14 at line 8 # spent 19µs making 1 call to Test2::Util::ExternalMeta::BEGIN@8
# spent 15µs making 1 call to Exporter::import |
9 | |||||
10 | sub META_KEY() { '_meta' } | ||||
11 | |||||
12 | 1 | 800ns | our @EXPORT = qw/meta set_meta get_meta delete_meta/; | ||
13 | 2 | 221µs | 1 | 7µs | # spent 7µs within Test2::Util::ExternalMeta::BEGIN@13 which was called:
# once (7µs+0s) by Test2::Hub::BEGIN@14 at line 13 # spent 7µs making 1 call to Test2::Util::ExternalMeta::BEGIN@13 |
14 | |||||
15 | sub set_meta { | ||||
16 | my $self = shift; | ||||
17 | my ($key, $value) = @_; | ||||
18 | |||||
19 | validate_key($key); | ||||
20 | |||||
21 | $self->{+META_KEY} ||= {}; | ||||
22 | $self->{+META_KEY}->{$key} = $value; | ||||
23 | } | ||||
24 | |||||
25 | sub get_meta { | ||||
26 | my $self = shift; | ||||
27 | my ($key) = @_; | ||||
28 | |||||
29 | validate_key($key); | ||||
30 | |||||
31 | my $meta = $self->{+META_KEY} or return undef; | ||||
32 | return $meta->{$key}; | ||||
33 | } | ||||
34 | |||||
35 | sub delete_meta { | ||||
36 | my $self = shift; | ||||
37 | my ($key) = @_; | ||||
38 | |||||
39 | validate_key($key); | ||||
40 | |||||
41 | my $meta = $self->{+META_KEY} or return undef; | ||||
42 | delete $meta->{$key}; | ||||
43 | } | ||||
44 | |||||
45 | # spent 17µs (14+4) within Test2::Util::ExternalMeta::meta which was called 3 times, avg 6µs/call:
# once (6µs+2µs) by Test::Builder::done_testing at line 586 of Test/Builder.pm
# once (5µs+1µs) by Test::Builder::reset at line 455 of Test/Builder.pm
# once (3µs+900ns) by Test::Builder::_ending at line 1657 of Test/Builder.pm | ||||
46 | 3 | 500ns | my $self = shift; | ||
47 | 3 | 1µs | my ($key, $default) = @_; | ||
48 | |||||
49 | 3 | 3µs | 3 | 4µs | validate_key($key); # spent 4µs making 3 calls to Test2::Util::ExternalMeta::validate_key, avg 1µs/call |
50 | |||||
51 | 3 | 900ns | my $meta = $self->{+META_KEY}; | ||
52 | 3 | 600ns | return undef unless $meta || defined($default); | ||
53 | |||||
54 | 3 | 600ns | unless($meta) { | ||
55 | 1 | 200ns | $meta = {}; | ||
56 | 1 | 300ns | $self->{+META_KEY} = $meta; | ||
57 | } | ||||
58 | |||||
59 | $meta->{$key} = $default | ||||
60 | 3 | 2µs | if defined($default) && !defined($meta->{$key}); | ||
61 | |||||
62 | 3 | 5µs | return $meta->{$key}; | ||
63 | } | ||||
64 | |||||
65 | # spent 4µs within Test2::Util::ExternalMeta::validate_key which was called 3 times, avg 1µs/call:
# 3 times (4µs+0s) by Test2::Util::ExternalMeta::meta at line 49, avg 1µs/call | ||||
66 | 3 | 500ns | my $key = shift; | ||
67 | |||||
68 | 3 | 5µs | return if $key && !ref($key); | ||
69 | |||||
70 | my $render_key = defined($key) ? "'$key'" : 'undef'; | ||||
71 | croak "Invalid META key: $render_key, keys must be true, and may not be references"; | ||||
72 | } | ||||
73 | |||||
74 | 1 | 2µs | 1; | ||
75 | |||||
76 | __END__ |