| 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 | Test2::Util::ExternalMeta::meta |
| 1 | 1 | 1 | 10µs | 11µs | Test2::Util::ExternalMeta::BEGIN@2 |
| 1 | 1 | 1 | 7µs | 7µs | Test2::Util::ExternalMeta::BEGIN@13 |
| 3 | 1 | 1 | 4µs | 4µs | Test2::Util::ExternalMeta::validate_key |
| 1 | 1 | 1 | 4µs | 19µs | Test2::Util::ExternalMeta::BEGIN@8 |
| 1 | 1 | 1 | 3µs | 20µs | Test2::Util::ExternalMeta::BEGIN@3 |
| 0 | 0 | 0 | 0s | 0s | Test2::Util::ExternalMeta::delete_meta |
| 0 | 0 | 0 | 0s | 0s | Test2::Util::ExternalMeta::get_meta |
| 0 | 0 | 0 | 0s | 0s | Test2::Util::ExternalMeta::set_meta |
| 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__ |