← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:57:08 2022
Reported on Wed Dec 14 16:00:37 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern/Vocabulary/FormatAssertion.pm
StatementsExecuted 1374 statements in 7.96ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
731112.13ms2.13msJSON::Schema::Modern::Vocabulary::FormatAssertion::::CORE:regcompJSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:regcomp (opcode)
63111.62ms25.7msJSON::Schema::Modern::Vocabulary::FormatAssertion::::_eval_keyword_formatJSON::Schema::Modern::Vocabulary::FormatAssertion::_eval_keyword_format
63111.01ms3.07msJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:132]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:132]
6311175µs175µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::_get_default_format_validationJSON::Schema::Modern::Vocabulary::FormatAssertion::_get_default_format_validation
7412187µs87µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::CORE:qrJSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:qr (opcode)
11146µs50µsModule::Runtime::::BEGIN@1.312 Module::Runtime::BEGIN@1.312
11140µs72µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@13JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@13
11133µs55µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@14JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@14
11130µs1.21msJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@11JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@11
11115µs95µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@17JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@17
11115µs402µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@19JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@19
11115µs15µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@9JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@9
11114µs30µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@15JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@15
11112µs193µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@12JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@12
11110µs30µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@16JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@16
11110µs44µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@18JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@18
11110µs50µsModule::Runtime::::BEGIN@2.313 Module::Runtime::BEGIN@2.313
1118µs285µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::BEGIN@10JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@10
1113µs3µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::keywordsJSON::Schema::Modern::Vocabulary::FormatAssertion::keywords
1112µs2µsJSON::Schema::Modern::Vocabulary::FormatAssertion::::vocabularyJSON::Schema::Modern::Vocabulary::FormatAssertion::vocabulary
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:101]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:101]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:117]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:117]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:121]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:121]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:124]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:124]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:125]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:125]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:126]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:126]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:127]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:127]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:128]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:128]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:130]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:130]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:134]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:134]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:135]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:135]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:38]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:38]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:41]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:41]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:44]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:44]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:47]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:47]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:51]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:51]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:77]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:77]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:78]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:78]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:96]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:96]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:97]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:97]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::__ANON__[:98]JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[:98]
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::_traverse_keyword_formatJSON::Schema::Modern::Vocabulary::FormatAssertion::_traverse_keyword_format
0000s0sJSON::Schema::Modern::Vocabulary::FormatAssertion::::evaluation_orderJSON::Schema::Modern::Vocabulary::FormatAssertion::evaluation_order
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1249µs254µs
# spent 50µs (46+4) within Module::Runtime::BEGIN@1.312 which was called: # once (46µs+4µs) by Module::Runtime::require_module at line 1
use strict;
# spent 50µs making 1 call to Module::Runtime::BEGIN@1.312 # spent 4µs making 1 call to strict::import
2257µs290µs
# spent 50µs (10+40) within Module::Runtime::BEGIN@2.313 which was called: # once (10µs+40µs) by Module::Runtime::require_module at line 2
use warnings;
# spent 50µs making 1 call to Module::Runtime::BEGIN@2.313 # spent 40µs making 1 call to warnings::import
3package JSON::Schema::Modern::Vocabulary::FormatAssertion;
4# vim: set ts=8 sts=2 sw=2 tw=100 et :
5# ABSTRACT: Implementation of the JSON Schema Format-Assertion vocabulary
6
710sour $VERSION = '0.556';
8
9241µs115µs
# spent 15µs within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@9 which was called: # once (15µs+0s) by Module::Runtime::require_module at line 9
use 5.020;
10229µs2562µs
# spent 285µs (8+277) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@10 which was called: # once (8µs+277µs) by Module::Runtime::require_module at line 10
use Moo;
# spent 285µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@10 # spent 277µs making 1 call to Moo::import
11393µs32.39ms
# spent 1.21ms (30µs+1.18) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@11 which was called: # once (30µs+1.18ms) by Module::Runtime::require_module at line 11
use strictures 2;
# spent 1.21ms making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@11 # spent 1.15ms making 1 call to strictures::import # spent 27µs making 1 call to strictures::VERSION
12273µs2374µs
# spent 193µs (12+181) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@12 which was called: # once (12µs+181µs) by Module::Runtime::require_module at line 12
use experimental qw(signatures postderef);
# spent 193µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@12 # spent 181µs making 1 call to experimental::import
13252µs277µs
# spent 72µs (40+32) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@13 which was called: # once (40µs+32µs) by Module::Runtime::require_module at line 13
use if "$]" >= 5.022, experimental => 're_strict';
# spent 72µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@13 # spent 5µs making 1 call to if::import
14266µs257µs
# spent 55µs (33+22) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@14 which was called: # once (33µs+22µs) by Module::Runtime::require_module at line 14
no if "$]" >= 5.031009, feature => 'indirect';
# spent 55µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@14 # spent 2µs making 1 call to if::unimport
15235µs230µs
# spent 30µs (14+16) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@15 which was called: # once (14µs+16µs) by Module::Runtime::require_module at line 15
no if "$]" >= 5.033001, feature => 'multidimensional';
# spent 30µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@15 # spent 0s making 1 call to if::unimport
16227µs232µs
# spent 30µs (10+20) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@16 which was called: # once (10µs+20µs) by Module::Runtime::require_module at line 16
no if "$]" >= 5.033006, feature => 'bareword_filehandles';
# spent 30µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@16 # spent 2µs making 1 call to if::unimport
17233µs2175µs
# spent 95µs (15+80) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@17 which was called: # once (15µs+80µs) by Module::Runtime::require_module at line 17
use JSON::Schema::Modern::Utilities qw(is_type E A assert_keyword_type abort);
# spent 95µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@17 # spent 80µs making 1 call to Exporter::import
18225µs278µs
# spent 44µs (10+34) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@18 which was called: # once (10µs+34µs) by Module::Runtime::require_module at line 18
use Feature::Compat::Try;
# spent 44µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@18 # spent 34µs making 1 call to Feature::Compat::Try::import
1922.28ms2789µs
# spent 402µs (15+387) within JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@19 which was called: # once (15µs+387µs) by Module::Runtime::require_module at line 19
use namespace::clean;
# spent 402µs making 1 call to JSON::Schema::Modern::Vocabulary::FormatAssertion::BEGIN@19 # spent 387µs making 1 call to namespace::clean::import
20
2113µs1522µswith 'JSON::Schema::Modern::Vocabulary';
# spent 522µs making 1 call to Moo::with
22
23
# spent 2µs within JSON::Schema::Modern::Vocabulary::FormatAssertion::vocabulary which was called: # once (2µs+0s) by JSON::Schema::Modern::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern.pm:696] at line 692 of JSON/Schema/Modern.pm
sub vocabulary {
2413µs 'https://json-schema.org/draft/2020-12/vocab/format-assertion' => 'draft2020-12';
25}
26
27sub evaluation_order { 3 }
28
29
# spent 3µs within JSON::Schema::Modern::Vocabulary::FormatAssertion::keywords which was called: # once (3µs+0s) by JSON::Schema::Modern::_eval_subschema at line 559 of JSON/Schema/Modern.pm
sub keywords {
3014µs qw(format);
31}
32
33{
34 # for now, all built-in formats are constrained to the 'string' type
35
36 my $is_datetime = sub {
37 eval { Time::Moment->from_string(uc($_[0])) } ? 1 : 0,
3811µs };
39 my $is_email = sub {
40 Email::Address::XS->parse($_[0])->is_valid;
4110s };
42 my $is_hostname = sub {
43 Data::Validate::Domain::is_domain($_[0]);
4410s };
45 my $idn_decode = sub {
46 try { return Net::IDN::Encode::domain_to_ascii($_[0]) } catch ($e) { return $_[0]; }
4714µs };
48 my $is_ipv4 = sub {
49 my @o = split(/\./, $_[0], 5);
50 @o == 4 && (grep /^(?:0|[1-9][0-9]{0,2})$/, @o) == 4 && (grep $_ < 256, @o) == 4;
5111µs };
52 # https://tools.ietf.org/html/rfc3339#appendix-A with some additions for the 2000 version
53 # as defined in https://en.wikipedia.org/wiki/ISO_8601#Durations
5412µs my $duration_re = do {
5515µs12µs my $num = qr{[0-9]+(?:[.,][0-9]+)?};
56126µs221µs my $second = qr{${num}S};
57110µs28µs my $minute = qr{${num}M};
58110µs27µs my $hour = qr{${num}H};
59127µs223µs my $time = qr{T(?=[0-9])(?:$hour)?(?:$minute)?(?:$second)?};
60111µs28µs my $day = qr{${num}D};
61113µs210µs my $month = qr{${num}M};
62112µs29µs my $year = qr{${num}Y};
6319µs25µs my $week = qr{${num}W};
64123µs220µs my $date = qr{(?=[0-9])(?:$year)?(?:$month)?(?:$day)?};
65152µs246µs qr{^P(?:(?=.)(?:$date)?(?:$time)?|$week)$};
66 };
67
68 my $formats = +{
69 'date-time' => sub {
70 $is_datetime->($_[0]) || (
71 $_[0] =~ m/^(?:\d{4}-\d\d-\d\dT\d\d:\d\d):(\d\d)(?:\.\d+)?(?:[Zz]|[+-]\d\d:\d\d)$/a
72 && $1 eq '60'
73 && do {
74 require DateTime::Format::RFC3339;
75 eval { DateTime::Format::RFC3339->parse_datetime($_[0]) };
76 });
77 },
78 date => sub { $_[0] =~ /^\d{4}-(?:\d\d)-(?:\d\d)$/a && $is_datetime->($_[0].'T00:00:00Z') },
79 time => sub {
80 return if $_[0] !~ /^(\d\d):(\d\d):(\d\d)(?:\.\d+)?([Zz]|([+-])(\d\d):(\d\d))$/a
81 or $1 > 23
82 or $2 > 59
83 or $3 > 60
84 or (defined($6) and $6 > 23)
85 or (defined($7) and $7 > 59);
86
87 return 1 if $3 <= 59;
88 return $1 == 23 && $2 == 59 if uc($4) eq 'Z';
89
90 my $sign = $5 eq '+' ? 1 : -1;
91 my $hour_zulu = $1 - $6*$sign;
92 my $min_zulu = $2 - $7*$sign;
93 $hour_zulu -= 1 if $min_zulu < 0;
94
95 return $hour_zulu%24 == 23 && $min_zulu%60 == 59;
96 },
97 duration => sub { $_[0] =~ $duration_re && $_[0] !~ m{[.,][0-9]+[A-Z].} },
98 email => sub { $is_email->($_[0]) && $_[0] !~ /[^[:ascii:]]/ },
99 'idn-email' => $is_email,
100 hostname => $is_hostname,
101 'idn-hostname' => sub { $is_hostname->($idn_decode->($_[0])) },
102 ipv4 => $is_ipv4,
103 ipv6 => sub {
104 ($_[0] =~ /^(?:[[:xdigit:]]{0,4}:){0,7}[[:xdigit:]]{0,4}$/
105 || $_[0] =~ /^(?:[[:xdigit:]]{0,4}:){1,6}((?:[0-9]{1,3}\.){3}[0-9]{1,3})$/
106 && $is_ipv4->($1))
107 && $_[0] !~ /:::/
108 && $_[0] !~ /^:[^:]/
109 && $_[0] !~ /[^:]:$/
110 && do {
111 my $double_colons = ()= ($_[0] =~ /::/g);
112 my $colon_components = grep length, split(/:+/, $_[0], -1);
113 $double_colons < 2 && ($double_colons > 0
114 || ($colon_components == 8 && !defined $1)
115 || ($colon_components == 7 && defined $1))
116 };
117 },
118 uri => sub {
119 my $uri = Mojo::URL->new($_[0]);
120 fc($uri->to_unsafe_string) eq fc($_[0]) && $uri->is_abs && $_[0] !~ /[^[:ascii:]]/;
121 },
122 'uri-reference' => sub {
123 fc(Mojo::URL->new($_[0])->to_unsafe_string) eq fc($_[0]) && $_[0] !~ /[^[:ascii:]]/;
124 },
125 iri => sub { Mojo::URL->new($_[0])->is_abs },
126 uuid => sub { $_[0] =~ /^[[:xdigit:]]{8}-(?:[[:xdigit:]]{4}-){3}[[:xdigit:]]{12}$/ },
127 'json-pointer' => sub { (!length($_[0]) || $_[0] =~ m{^/}) && $_[0] !~ m{~(?![01])} },
128 'relative-json-pointer' => sub { $_[0] =~ m{^(?:0|[1-9][0-9]*)(?:#$|$|/)} && $_[0] !~ m{~(?![01])} },
129
# spent 3.07ms (1.01+2.06) within JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern/Vocabulary/FormatAssertion.pm:132] which was called 63 times, avg 49µs/call: # 63 times (1.01ms+2.06ms) by JSON::Schema::Modern::Vocabulary::FormatAssertion::_eval_keyword_format at line 181, avg 49µs/call
regex => sub {
13063367µs local $SIG{__WARN__} = sub { die @_ };
1311892.77ms1262.06ms eval { qr/$_[0]/; 1 ? 1 : 0 };
# spent 1.98ms making 63 calls to JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:regcomp, avg 31µs/call # spent 76µs making 63 calls to JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:qr, avg 1µs/call
132 },
133
134 'iri-reference' => sub { 1 },
135 'uri-template' => sub { 1 },
136116µs };
137
13818945µs
# spent 175µs within JSON::Schema::Modern::Vocabulary::FormatAssertion::_get_default_format_validation which was called 63 times, avg 3µs/call: # 63 times (175µs+0s) by JSON::Schema::Modern::Vocabulary::FormatAssertion::_eval_keyword_format at line 173, avg 3µs/call
sub _get_default_format_validation ($self, $format) {
13963149µs return $formats->{$format};
140 }
141}
142
14310ssub _traverse_keyword_format ($self, $schema, $state) {
144 return if not assert_keyword_type($state, $schema, 'string');
145 return 1;
146}
147
148315100µs
# spent 25.7ms (1.62+24.1) within JSON::Schema::Modern::Vocabulary::FormatAssertion::_eval_keyword_format which was called 63 times, avg 408µs/call: # 63 times (1.62ms+24.1ms) by JSON::Schema::Modern::_eval_subschema at line 574 of JSON/Schema/Modern.pm, avg 408µs/call
sub _eval_keyword_format ($self, $data, $schema, $state) {
149 abort($state, 'unimplemented format "%s"', $schema->{format})
1506339µs if $schema->{format} eq 'uri-template';
151
1526344µs try {
15363216µs if ($schema->{format} eq 'date-time' or $schema->{format} eq 'date') {
154 require Time::Moment;
155 }
156 elsif ($schema->{format} eq 'email' or $schema->{format} eq 'idn-email') {
157 require Email::Address::XS; Email::Address::XS->VERSION(1.04);
158 }
159 elsif ($schema->{format} eq 'hostname' or $schema->{format} eq 'idn-hostname') {
160 require Data::Validate::Domain;
161 }
162 elsif ($schema->{format} eq 'idn-hostname') {
163 require Net::IDN::Encode;
164 }
165 }
166 catch ($e) {
167 return E($state, 'cannot validate format "%s": %s', $schema->{format}, $e);
168 }
169
170 # first check the subrefs from JSON::Schema::Modern->new(format_evaluations => { ... })
171 # and add in the type if needed
17263201µs631.69ms my $evaluator_spec = $state->{evaluator}->_get_format_validation($schema->{format});
# spent 1.69ms making 63 calls to JSON::Schema::Modern::_get_format_validation, avg 27µs/call
17363176µs63175µs my $default_spec = $self->_get_default_format_validation($schema->{format});
174
17563135µs my $spec =
176 $evaluator_spec ? ($default_spec ? +{ type => 'string', sub => $evaluator_spec } : $evaluator_spec)
177 : $default_spec ? +{ type => 'string', sub => $default_spec }
178 : undef;
179
180 return E($state, 'not a%s %s', $schema->{format} =~ /^[aeio]/ ? 'n' : '', $schema->{format})
18163198µs1263.67ms if $spec and is_type($spec->{type}, $data) and not $spec->{sub}->($data);
182
18363340µs6318.5ms return A($state, $schema->{format});
# spent 18.5ms making 63 calls to JSON::Schema::Modern::Utilities::A, avg 294µs/call
184}
185
186120µs1;
187
188167µs1393µs__END__
 
# spent 87µs within JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:qr which was called 74 times, avg 1µs/call: # 63 times (76µs+0s) by JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern/Vocabulary/FormatAssertion.pm:132] at line 131, avg 1µs/call # once (3µs+0s) by Module::Runtime::require_module at line 62 # once (2µs+0s) by Module::Runtime::require_module at line 55 # once (1µs+0s) by Module::Runtime::require_module at line 60 # once (1µs+0s) by Module::Runtime::require_module at line 56 # once (1µs+0s) by Module::Runtime::require_module at line 64 # once (1µs+0s) by Module::Runtime::require_module at line 58 # once (1µs+0s) by Module::Runtime::require_module at line 57 # once (1µs+0s) by Module::Runtime::require_module at line 65 # once (0s+0s) by Module::Runtime::require_module at line 61 # once (0s+0s) by Module::Runtime::require_module at line 63 # once (0s+0s) by Module::Runtime::require_module at line 59
sub JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:qr; # opcode
# spent 2.13ms within JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:regcomp which was called 73 times, avg 29µs/call: # 63 times (1.98ms+0s) by JSON::Schema::Modern::Vocabulary::FormatAssertion::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern/Vocabulary/FormatAssertion.pm:132] at line 131, avg 31µs/call # once (45µs+0s) by Module::Runtime::require_module at line 65 # once (23µs+0s) by Module::Runtime::require_module at line 59 # once (20µs+0s) by Module::Runtime::require_module at line 56 # once (19µs+0s) by Module::Runtime::require_module at line 64 # once (10µs+0s) by Module::Runtime::require_module at line 61 # once (7µs+0s) by Module::Runtime::require_module at line 57 # once (7µs+0s) by Module::Runtime::require_module at line 60 # once (6µs+0s) by Module::Runtime::require_module at line 58 # once (6µs+0s) by Module::Runtime::require_module at line 62 # once (5µs+0s) by Module::Runtime::require_module at line 63
sub JSON::Schema::Modern::Vocabulary::FormatAssertion::CORE:regcomp; # opcode