Profile of version.pm

← Index
NYTProf Performance Profile «line view»
For test.pl
Run on Mon Apr 5 14:31:27 2021
Reported on Mon Apr 5 14:31:40 2021

Filename | /home/leont/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0/version.pm
Statements | Executed 21 statements in 395µs

Subroutines
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 84µs | 99µs | version::::BEGIN@6version::BEGIN@6
24 | 3 | 2 | 20µs | 20µs | version::::newversion::new (xsub)
1 | 1 | 1 | 7µs | 7µs | version::::BEGIN@4version::BEGIN@4
1 | 1 | 1 | 3µs | 10µs | version::::BEGIN@27version::BEGIN@27
1 | 1 | 1 | 3µs | 4µs | version::::BEGIN@5version::BEGIN@5
0 | 0 | 0 | 0s | 0s | version::::__ANON__[:53]version::__ANON__[:53]
0 | 0 | 0 | 0s | 0s | version::::__ANON__[:59]version::__ANON__[:59]
0 | 0 | 0 | 0s | 0s | version::::importversion::import

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | #!perl -w
2 |  |  |  |  | package version;
3 |  |  |  |  |
4 | 2 | 22µs | 1 | 7µs | # spent 7µs within version::BEGIN@4 which was called: # once (7µs+0s) by experimental::BEGIN@5 at line 4 use 5.006002; # spent 7µs making 1 call to version::BEGIN@4
5 | 2 | 10µs | 2 | 5µs | # spent 4µs (3+1) within version::BEGIN@5 which was called: # once (3µs+1µs) by experimental::BEGIN@5 at line 5 use strict; # spent 4µs making 1 call to version::BEGIN@5 # spent 1µs making 1 call to strict::import
6 | 2 | 150µs | 2 | 114µs | # spent 99µs (84+15) within version::BEGIN@6 which was called: # once (84µs+15µs) by experimental::BEGIN@5 at line 6 use warnings::register; # spent 99µs making 1 call to version::BEGIN@6 # spent 15µs making 1 call to warnings::register::import
7 | 1 | 1µs | 1 | 2µs | if ($] >= 5.015) { # spent 2µs making 1 call to warnings::register_categories
8 |  |  |  |  | warnings::register_categories(qw/version/);
9 |  |  |  |  | }
10 |  |  |  |  |
11 | 1 | 200ns |  |  | our $VERSION = 0.9924;
12 | 1 | 100ns |  |  | our $CLASS = 'version';
13 |  |  |  |  | our (@ISA, $STRICT, $LAX);
14 |  |  |  |  |
15 |  |  |  |  | # avoid using Exporter
16 | 1 | 35µs |  |  | require version::regex;
17 | 1 | 900ns |  |  | *version::is_lax = \&version::regex::is_lax;
18 | 1 | 100ns |  |  | *version::is_strict = \&version::regex::is_strict;
19 | 1 | 300ns |  |  | *LAX = \$version::regex::LAX;
20 | 1 | 100ns |  |  | *LAX_DECIMAL_VERSION = \$version::regex::LAX_DECIMAL_VERSION;
21 | 1 | 100ns |  |  | *LAX_DOTTED_DECIMAL_VERSION = \$version::regex::LAX_DOTTED_DECIMAL_VERSION;
22 | 1 | 100ns |  |  | *STRICT = \$version::regex::STRICT;
23 | 1 | 100ns |  |  | *STRICT_DECIMAL_VERSION = \$version::regex::STRICT_DECIMAL_VERSION;
24 | 1 | 100ns |  |  | *STRICT_DOTTED_DECIMAL_VERSION = \$version::regex::STRICT_DOTTED_DECIMAL_VERSION;
25 |  |  |  |  |
26 |  |  |  |  | sub import {
27 | 2 | 172µs | 2 | 18µs | # spent 10µs (3+7) within version::BEGIN@27 which was called: # once (3µs+7µs) by experimental::BEGIN@5 at line 27 no strict 'refs'; # spent 10µs making 1 call to version::BEGIN@27 # spent 7µs making 1 call to strict::unimport
28 |  |  |  |  | my ($class) = shift;
29 |  |  |  |  |
30 |  |  |  |  | # Set up any derived class
31 |  |  |  |  | unless ($class eq $CLASS) {
32 |  |  |  |  | local $^W;
33 |  |  |  |  | *{$class.'::declare'} = \&{$CLASS.'::declare'};
34 |  |  |  |  | *{$class.'::qv'} = \&{$CLASS.'::qv'};
35 |  |  |  |  | }
36 |  |  |  |  |
37 |  |  |  |  | my %args;
38 |  |  |  |  | if (@_) { # any remaining terms are arguments
39 |  |  |  |  | map { $args{$_} = 1 } @_
40 |  |  |  |  | }
41 |  |  |  |  | else { # no parameters at all on use line
42 |  |  |  |  | %args =
43 |  |  |  |  | (
44 |  |  |  |  | qv => 1,
45 |  |  |  |  | 'UNIVERSAL::VERSION' => 1,
46 |  |  |  |  | );
47 |  |  |  |  | }
48 |  |  |  |  |
49 |  |  |  |  | my $callpkg = caller();
50 |  |  |  |  |
51 |  |  |  |  | if (exists($args{declare})) {
52 |  |  |  |  | *{$callpkg.'::declare'} =
53 |  |  |  |  | sub {return $class->declare(shift) }
54 |  |  |  |  | unless defined(&{$callpkg.'::declare'});
55 |  |  |  |  | }
56 |  |  |  |  |
57 |  |  |  |  | if (exists($args{qv})) {
58 |  |  |  |  | *{$callpkg.'::qv'} =
59 |  |  |  |  | sub {return $class->qv(shift) }
60 |  |  |  |  | unless defined(&{$callpkg.'::qv'});
61 |  |  |  |  | }
62 |  |  |  |  |
63 |  |  |  |  | if (exists($args{'UNIVERSAL::VERSION'})) {
64 |  |  |  |  | local $^W;
65 |  |  |  |  | *UNIVERSAL::VERSION
66 |  |  |  |  | = \&{$CLASS.'::_VERSION'};
67 |  |  |  |  | }
68 |  |  |  |  |
69 |  |  |  |  | if (exists($args{'VERSION'})) {
70 |  |  |  |  | *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'};
71 |  |  |  |  | }
72 |  |  |  |  |
73 |  |  |  |  | if (exists($args{'is_strict'})) {
74 |  |  |  |  | *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'}
75 |  |  |  |  | unless defined(&{$callpkg.'::is_strict'});
76 |  |  |  |  | }
77 |  |  |  |  |
78 |  |  |  |  | if (exists($args{'is_lax'})) {
79 |  |  |  |  | *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'}
80 |  |  |  |  | unless defined(&{$callpkg.'::is_lax'});
81 |  |  |  |  | }
82 |  |  |  |  | }
83 |  |  |  |  |
84 |  |  |  |  |
85 | 1 | 4µs |  |  | 1;
|  |  |  |  | # spent 20µs within version::new which was called 24 times, avg 850ns/call: # 21 times (17µs+0s) by main::BEGIN@3 at line 48 of experimental.pm, avg 819ns/call # 2 times (2µs+0s) by main::BEGIN@3 at line 49 of experimental.pm, avg 750ns/call # once (2µs+0s) by CPAN::Meta::Prereqs::BEGIN@18 at line 55 of CPAN/Meta/Requirements.pm sub version::new; # xsub