Filename | /usr/local/perls/perl-5.26.1/lib/site_perl/5.26.1/URI.pm |
Statements | Executed 121 statements in 7.09ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 2.52ms | 2.67ms | BEGIN@23 | URI::
2 | 1 | 1 | 1.95ms | 8.50ms | implementor | URI::
5 | 5 | 1 | 177µs | 177µs | CORE:regcomp (opcode) | URI::
4 | 2 | 1 | 142µs | 199µs | _scheme | URI::
2 | 1 | 1 | 112µs | 8.88ms | new | URI::
2 | 1 | 1 | 59µs | 196µs | _init | URI::
2 | 1 | 1 | 52µs | 203µs | canonical | URI::
2 | 1 | 1 | 50µs | 103µs | scheme | URI::
14 | 6 | 1 | 49µs | 49µs | CORE:match (opcode) | URI::
1 | 1 | 1 | 39µs | 79µs | BEGIN@130 | URI::
2 | 1 | 1 | 37µs | 88µs | _uric_escape | URI::
1 | 1 | 1 | 34µs | 192µs | BEGIN@25 | URI::
1 | 1 | 1 | 30µs | 34µs | BEGIN@3 | URI::
13 | 8 | 1 | 24µs | 24µs | CORE:subst (opcode) | URI::
1 | 1 | 1 | 16µs | 27µs | BEGIN@4 | URI::
1 | 1 | 1 | 10µs | 10µs | BEGIN@22 | URI::
1 | 1 | 1 | 8µs | 8µs | _init_implementor | URI::
0 | 0 | 0 | 0s | 0s | STORABLE_freeze | URI::
0 | 0 | 0 | 0s | 0s | STORABLE_thaw | URI::
0 | 0 | 0 | 0s | 0s | TO_JSON | URI::
0 | 0 | 0 | 0s | 0s | __ANON__[:25] | URI::
0 | 0 | 0 | 0s | 0s | __ANON__[:26] | URI::
0 | 0 | 0 | 0s | 0s | __ANON__[:27] | URI::
0 | 0 | 0 | 0s | 0s | _no_scheme_ok | URI::
0 | 0 | 0 | 0s | 0s | _obj_eq | URI::
0 | 0 | 0 | 0s | 0s | abs | URI::
0 | 0 | 0 | 0s | 0s | as_iri | URI::
0 | 0 | 0 | 0s | 0s | as_string | URI::
0 | 0 | 0 | 0s | 0s | clone | URI::
0 | 0 | 0 | 0s | 0s | eq | URI::
0 | 0 | 0 | 0s | 0s | fragment | URI::
0 | 0 | 0 | 0s | 0s | has_recognized_scheme | URI::
0 | 0 | 0 | 0s | 0s | new_abs | URI::
0 | 0 | 0 | 0s | 0s | opaque | URI::
0 | 0 | 0 | 0s | 0s | path | URI::
0 | 0 | 0 | 0s | 0s | rel | URI::
0 | 0 | 0 | 0s | 0s | secure | URI::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package URI; | ||||
2 | |||||
3 | 2 | 42µs | 2 | 38µs | # spent 34µs (30+4) within URI::BEGIN@3 which was called:
# once (30µs+4µs) by URI::WithBase::BEGIN@6 at line 3 # spent 34µs making 1 call to URI::BEGIN@3
# spent 4µs making 1 call to strict::import |
4 | 2 | 171µs | 2 | 38µs | # spent 27µs (16+11) within URI::BEGIN@4 which was called:
# once (16µs+11µs) by URI::WithBase::BEGIN@6 at line 4 # spent 27µs making 1 call to URI::BEGIN@4
# spent 11µs making 1 call to warnings::import |
5 | |||||
6 | 1 | 1µs | our $VERSION = '1.72'; | ||
7 | 1 | 25µs | $VERSION = eval $VERSION; # spent 5µs executing statements in string eval | ||
8 | |||||
9 | our ($ABS_REMOTE_LEADING_DOTS, $ABS_ALLOW_RELATIVE_SCHEME, $DEFAULT_QUERY_FORM_DELIMITER); | ||||
10 | |||||
11 | 1 | 0s | my %implements; # mapping from scheme to implementor class | ||
12 | |||||
13 | # Some "official" character classes | ||||
14 | |||||
15 | 1 | 1µs | our $reserved = q(;/?:@&=+$,[]); | ||
16 | 1 | 0s | our $mark = q(-_.!~*'()); #'; emacs | ||
17 | 1 | 2µs | our $unreserved = "A-Za-z0-9\Q$mark\E"; | ||
18 | 1 | 1µs | our $uric = quotemeta($reserved) . $unreserved . "%"; | ||
19 | |||||
20 | 1 | 1µs | our $scheme_re = '[a-zA-Z][a-zA-Z0-9.+\-]*'; | ||
21 | |||||
22 | 2 | 36µs | 1 | 10µs | # spent 10µs within URI::BEGIN@22 which was called:
# once (10µs+0s) by URI::WithBase::BEGIN@6 at line 22 # spent 10µs making 1 call to URI::BEGIN@22 |
23 | 2 | 737µs | 1 | 2.67ms | # spent 2.67ms (2.52+150µs) within URI::BEGIN@23 which was called:
# once (2.52ms+150µs) by URI::WithBase::BEGIN@6 at line 23 # spent 2.67ms making 1 call to URI::BEGIN@23 |
24 | |||||
25 | # spent 192µs (34+158) within URI::BEGIN@25 which was called:
# once (34µs+158µs) by URI::WithBase::BEGIN@6 at line 29 | ||||
26 | '==' => sub { _obj_eq(@_) }, | ||||
27 | '!=' => sub { !_obj_eq(@_) }, | ||||
28 | 1 | 1µs | fallback => 1, | ||
29 | 1 | 2.23ms | 2 | 350µs | ); # spent 192µs making 1 call to URI::BEGIN@25
# spent 158µs making 1 call to overload::import |
30 | |||||
31 | # Check if two objects are the same object | ||||
32 | sub _obj_eq { | ||||
33 | return overload::StrVal($_[0]) eq overload::StrVal($_[1]); | ||||
34 | } | ||||
35 | |||||
36 | sub new | ||||
37 | # spent 8.88ms (112µs+8.76) within URI::new which was called 2 times, avg 4.44ms/call:
# 2 times (112µs+8.76ms) by URI::WithBase::new at line 23 of URI/WithBase.pm, avg 4.44ms/call | ||||
38 | 2 | 1µs | my($class, $uri, $scheme) = @_; | ||
39 | |||||
40 | 2 | 2µs | $uri = defined ($uri) ? "$uri" : ""; # stringify | ||
41 | # Get rid of potential wrapping | ||||
42 | 2 | 20µs | 2 | 4µs | $uri =~ s/^<(?:URL:)?(.*)>$/$1/; # # spent 4µs making 2 calls to URI::CORE:subst, avg 2µs/call |
43 | 2 | 11µs | 2 | 1µs | $uri =~ s/^"(.*)"$/$1/; # spent 1µs making 2 calls to URI::CORE:subst, avg 500ns/call |
44 | 2 | 12µs | 2 | 4µs | $uri =~ s/^\s+//; # spent 4µs making 2 calls to URI::CORE:subst, avg 2µs/call |
45 | 2 | 9µs | 2 | 4µs | $uri =~ s/\s+$//; # spent 4µs making 2 calls to URI::CORE:subst, avg 2µs/call |
46 | |||||
47 | 2 | 0s | my $impclass; | ||
48 | 2 | 91µs | 3 | 54µs | if ($uri =~ m/^($scheme_re):/so) { # spent 45µs making 1 call to URI::CORE:regcomp
# spent 9µs making 2 calls to URI::CORE:match, avg 4µs/call |
49 | $scheme = $1; | ||||
50 | } | ||||
51 | else { | ||||
52 | if (($impclass = ref($scheme))) { | ||||
53 | $scheme = $scheme->scheme; | ||||
54 | } | ||||
55 | elsif ($scheme && $scheme =~ m/^($scheme_re)(?::|$)/o) { | ||||
56 | $scheme = $1; | ||||
57 | } | ||||
58 | } | ||||
59 | $impclass ||= implementor($scheme) || | ||||
60 | 2 | 6µs | 2 | 8.50ms | do { # spent 8.50ms making 2 calls to URI::implementor, avg 4.25ms/call |
61 | require URI::_foreign; | ||||
62 | $impclass = 'URI::_foreign'; | ||||
63 | }; | ||||
64 | |||||
65 | 2 | 24µs | 2 | 196µs | return $impclass->_init($uri, $scheme); # spent 196µs making 2 calls to URI::_init, avg 98µs/call |
66 | } | ||||
67 | |||||
68 | |||||
69 | sub new_abs | ||||
70 | { | ||||
71 | my($class, $uri, $base) = @_; | ||||
72 | $uri = $class->new($uri, $base); | ||||
73 | $uri->abs($base); | ||||
74 | } | ||||
75 | |||||
76 | |||||
77 | sub _init | ||||
78 | # spent 196µs (59+137) within URI::_init which was called 2 times, avg 98µs/call:
# 2 times (59µs+137µs) by URI::new at line 65, avg 98µs/call | ||||
79 | 2 | 2µs | my $class = shift; | ||
80 | 2 | 2µs | my($str, $scheme) = @_; | ||
81 | # find all funny characters and encode the bytes. | ||||
82 | 2 | 11µs | 2 | 88µs | $str = $class->_uric_escape($str); # spent 88µs making 2 calls to URI::_uric_escape, avg 44µs/call |
83 | 2 | 73µs | 3 | 49µs | $str = "$scheme:$str" unless $str =~ /^$scheme_re:/o || # spent 34µs making 1 call to URI::CORE:regcomp
# spent 15µs making 2 calls to URI::CORE:match, avg 8µs/call |
84 | $class->_no_scheme_ok; | ||||
85 | 2 | 3µs | my $self = bless \$str, $class; | ||
86 | 2 | 10µs | $self; | ||
87 | } | ||||
88 | |||||
89 | |||||
90 | sub _uric_escape | ||||
91 | # spent 88µs (37+51) within URI::_uric_escape which was called 2 times, avg 44µs/call:
# 2 times (37µs+51µs) by URI::_init at line 82, avg 44µs/call | ||||
92 | 2 | 1µs | my($class, $str) = @_; | ||
93 | 2 | 63µs | 3 | 46µs | $str =~ s*([^$uric\#])* URI::Escape::escape_char($1) *ego; # spent 37µs making 1 call to URI::CORE:regcomp
# spent 9µs making 2 calls to URI::CORE:subst, avg 4µs/call |
94 | 2 | 19µs | 2 | 5µs | utf8::downgrade($str); # spent 5µs making 2 calls to utf8::downgrade, avg 2µs/call |
95 | 2 | 15µs | return $str; | ||
96 | } | ||||
97 | |||||
98 | 1 | 0s | my %require_attempted; | ||
99 | |||||
100 | sub implementor | ||||
101 | # spent 8.50ms (1.95+6.55) within URI::implementor which was called 2 times, avg 4.25ms/call:
# 2 times (1.95ms+6.55ms) by URI::new at line 60, avg 4.25ms/call | ||||
102 | 2 | 2µs | my($scheme, $impclass) = @_; | ||
103 | 2 | 34µs | 3 | 24µs | if (!$scheme || $scheme !~ /\A$scheme_re\z/o) { # spent 19µs making 1 call to URI::CORE:regcomp
# spent 5µs making 2 calls to URI::CORE:match, avg 2µs/call |
104 | require URI::_generic; | ||||
105 | return "URI::_generic"; | ||||
106 | } | ||||
107 | |||||
108 | 2 | 3µs | $scheme = lc($scheme); | ||
109 | |||||
110 | 2 | 1µs | if ($impclass) { | ||
111 | # Set the implementor class for a given scheme | ||||
112 | my $old = $implements{$scheme}; | ||||
113 | $impclass->_init_implementor($scheme); | ||||
114 | $implements{$scheme} = $impclass; | ||||
115 | return $old; | ||||
116 | } | ||||
117 | |||||
118 | 2 | 2µs | my $ic = $implements{$scheme}; | ||
119 | 2 | 3µs | return $ic if $ic; | ||
120 | |||||
121 | # scheme not yet known, look for internal or | ||||
122 | # preloaded (with 'use') implementation | ||||
123 | 1 | 1µs | $ic = "URI::$scheme"; # default location | ||
124 | |||||
125 | # turn scheme into a valid perl identifier by a simple transformation... | ||||
126 | 1 | 4µs | 1 | 1µs | $ic =~ s/\+/_P/g; # spent 1µs making 1 call to URI::CORE:subst |
127 | 1 | 6µs | 1 | 0s | $ic =~ s/\./_O/g; # spent 0s making 1 call to URI::CORE:subst |
128 | 1 | 4µs | 1 | 1µs | $ic =~ s/\-/_/g; # spent 1µs making 1 call to URI::CORE:subst |
129 | |||||
130 | 2 | 2.97ms | 2 | 119µs | # spent 79µs (39+40) within URI::BEGIN@130 which was called:
# once (39µs+40µs) by URI::WithBase::BEGIN@6 at line 130 # spent 79µs making 1 call to URI::BEGIN@130
# spent 40µs making 1 call to strict::unimport |
131 | # check we actually have one for the scheme: | ||||
132 | 1 | 5µs | unless (@{"${ic}::ISA"}) { | ||
133 | 1 | 1µs | if (not exists $require_attempted{$ic}) { | ||
134 | # Try to load it | ||||
135 | 1 | 1µs | my $_old_error = $@; | ||
136 | 1 | 27µs | eval "require $ic"; # spent 552µs executing statements in string eval | ||
137 | 1 | 0s | die $@ if $@ && $@ !~ /Can\'t locate.*in \@INC/; | ||
138 | 1 | 2µs | $@ = $_old_error; | ||
139 | } | ||||
140 | 1 | 6µs | return undef unless @{"${ic}::ISA"}; | ||
141 | } | ||||
142 | |||||
143 | 1 | 14µs | 1 | 8µs | $ic->_init_implementor($scheme); # spent 8µs making 1 call to URI::_init_implementor |
144 | 1 | 3µs | $implements{$scheme} = $ic; | ||
145 | 1 | 9µs | $ic; | ||
146 | } | ||||
147 | |||||
148 | |||||
149 | sub _init_implementor | ||||
150 | # spent 8µs within URI::_init_implementor which was called:
# once (8µs+0s) by URI::implementor at line 143 | ||||
151 | 1 | 22µs | my($class, $scheme) = @_; | ||
152 | # Remember that one implementor class may actually | ||||
153 | # serve to implement several URI schemes. | ||||
154 | } | ||||
155 | |||||
156 | |||||
157 | sub clone | ||||
158 | { | ||||
159 | my $self = shift; | ||||
160 | my $other = $$self; | ||||
161 | bless \$other, ref $self; | ||||
162 | } | ||||
163 | |||||
164 | sub TO_JSON { ${$_[0]} } | ||||
165 | |||||
166 | sub _no_scheme_ok { 0 } | ||||
167 | |||||
168 | sub _scheme | ||||
169 | { | ||||
170 | 4 | 2µs | my $self = shift; | ||
171 | |||||
172 | 4 | 4µs | unless (@_) { | ||
173 | 4 | 176µs | 5 | 57µs | return undef unless $$self =~ /^($scheme_re):/o; # spent 42µs making 1 call to URI::CORE:regcomp
# spent 15µs making 4 calls to URI::CORE:match, avg 4µs/call |
174 | 4 | 57µs | return $1; | ||
175 | } | ||||
176 | |||||
177 | my $old; | ||||
178 | my $new = shift; | ||||
179 | if (defined($new) && length($new)) { | ||||
180 | Carp::croak("Bad scheme '$new'") unless $new =~ /^$scheme_re$/o; | ||||
181 | $old = $1 if $$self =~ s/^($scheme_re)://o; | ||||
182 | my $newself = URI->new("$new:$$self"); | ||||
183 | $$self = $$newself; | ||||
184 | bless $self, ref($newself); | ||||
185 | } | ||||
186 | else { | ||||
187 | if ($self->_no_scheme_ok) { | ||||
188 | $old = $1 if $$self =~ s/^($scheme_re)://o; | ||||
189 | Carp::carp("Oops, opaque part now look like scheme") | ||||
190 | if $^W && $$self =~ m/^$scheme_re:/o | ||||
191 | } | ||||
192 | else { | ||||
193 | $old = $1 if $$self =~ m/^($scheme_re):/o; | ||||
194 | } | ||||
195 | } | ||||
196 | |||||
197 | return $old; | ||||
198 | } | ||||
199 | |||||
200 | sub scheme | ||||
201 | # spent 103µs (50+53) within URI::scheme which was called 2 times, avg 52µs/call:
# 2 times (50µs+53µs) by URI::file::canonical at line 70 of URI/file.pm, avg 52µs/call | ||||
202 | 2 | 6µs | 2 | 53µs | my $scheme = shift->_scheme(@_); # spent 53µs making 2 calls to URI::_scheme, avg 26µs/call |
203 | 2 | 1µs | return undef unless defined $scheme; | ||
204 | 2 | 23µs | lc($scheme); | ||
205 | } | ||||
206 | |||||
207 | sub has_recognized_scheme { | ||||
208 | my $self = shift; | ||||
209 | return ref($self) !~ /^URI::_(?:foreign|generic)\z/; | ||||
210 | } | ||||
211 | |||||
212 | sub opaque | ||||
213 | { | ||||
214 | my $self = shift; | ||||
215 | |||||
216 | unless (@_) { | ||||
217 | $$self =~ /^(?:$scheme_re:)?([^\#]*)/o or die; | ||||
218 | return $1; | ||||
219 | } | ||||
220 | |||||
221 | $$self =~ /^($scheme_re:)? # optional scheme | ||||
222 | ([^\#]*) # opaque | ||||
223 | (\#.*)? # optional fragment | ||||
224 | $/sx or die; | ||||
225 | |||||
226 | my $old_scheme = $1; | ||||
227 | my $old_opaque = $2; | ||||
228 | my $old_frag = $3; | ||||
229 | |||||
230 | my $new_opaque = shift; | ||||
231 | $new_opaque = "" unless defined $new_opaque; | ||||
232 | $new_opaque =~ s/([^$uric])/ URI::Escape::escape_char($1)/ego; | ||||
233 | utf8::downgrade($new_opaque); | ||||
234 | |||||
235 | $$self = defined($old_scheme) ? $old_scheme : ""; | ||||
236 | $$self .= $new_opaque; | ||||
237 | $$self .= $old_frag if defined $old_frag; | ||||
238 | |||||
239 | $old_opaque; | ||||
240 | } | ||||
241 | |||||
242 | sub path { goto &opaque } # alias | ||||
243 | |||||
244 | |||||
245 | sub fragment | ||||
246 | { | ||||
247 | my $self = shift; | ||||
248 | unless (@_) { | ||||
249 | return undef unless $$self =~ /\#(.*)/s; | ||||
250 | return $1; | ||||
251 | } | ||||
252 | |||||
253 | my $old; | ||||
254 | $old = $1 if $$self =~ s/\#(.*)//s; | ||||
255 | |||||
256 | my $new_frag = shift; | ||||
257 | if (defined $new_frag) { | ||||
258 | $new_frag =~ s/([^$uric])/ URI::Escape::escape_char($1) /ego; | ||||
259 | utf8::downgrade($new_frag); | ||||
260 | $$self .= "#$new_frag"; | ||||
261 | } | ||||
262 | $old; | ||||
263 | } | ||||
264 | |||||
265 | |||||
266 | sub as_string | ||||
267 | { | ||||
268 | my $self = shift; | ||||
269 | $$self; | ||||
270 | } | ||||
271 | |||||
272 | |||||
273 | sub as_iri | ||||
274 | { | ||||
275 | my $self = shift; | ||||
276 | my $str = $$self; | ||||
277 | if ($str =~ s/%([89a-fA-F][0-9a-fA-F])/chr(hex($1))/eg) { | ||||
278 | # All this crap because the more obvious: | ||||
279 | # | ||||
280 | # Encode::decode("UTF-8", $str, sub { sprintf "%%%02X", shift }) | ||||
281 | # | ||||
282 | # doesn't work before Encode 2.39. Wait for a standard release | ||||
283 | # to bundle that version. | ||||
284 | |||||
285 | require Encode; | ||||
286 | my $enc = Encode::find_encoding("UTF-8"); | ||||
287 | my $u = ""; | ||||
288 | while (length $str) { | ||||
289 | $u .= $enc->decode($str, Encode::FB_QUIET()); | ||||
290 | if (length $str) { | ||||
291 | # escape next char | ||||
292 | $u .= URI::Escape::escape_char(substr($str, 0, 1, "")); | ||||
293 | } | ||||
294 | } | ||||
295 | $str = $u; | ||||
296 | } | ||||
297 | return $str; | ||||
298 | } | ||||
299 | |||||
300 | |||||
301 | sub canonical | ||||
302 | # spent 203µs (52+151) within URI::canonical which was called 2 times, avg 102µs/call:
# 2 times (52µs+151µs) by URI::file::canonical at line 68 of URI/file.pm, avg 102µs/call | ||||
303 | # Make sure scheme is lowercased, that we don't escape unreserved chars, | ||||
304 | # and that we use upcase escape sequences. | ||||
305 | |||||
306 | 2 | 2µs | my $self = shift; | ||
307 | 2 | 10µs | 2 | 146µs | my $scheme = $self->_scheme || ""; # spent 146µs making 2 calls to URI::_scheme, avg 73µs/call |
308 | 2 | 20µs | 2 | 3µs | my $uc_scheme = $scheme =~ /[A-Z]/; # spent 3µs making 2 calls to URI::CORE:match, avg 2µs/call |
309 | 2 | 13µs | 2 | 2µs | my $esc = $$self =~ /%[a-fA-F0-9]{2}/; # spent 2µs making 2 calls to URI::CORE:match, avg 1µs/call |
310 | 2 | 15µs | return $self unless $uc_scheme || $esc; | ||
311 | |||||
312 | my $other = $self->clone; | ||||
313 | if ($uc_scheme) { | ||||
314 | $other->_scheme(lc $scheme); | ||||
315 | } | ||||
316 | if ($esc) { | ||||
317 | $$other =~ s{%([0-9a-fA-F]{2})} | ||||
318 | { my $a = chr(hex($1)); | ||||
319 | $a =~ /^[$unreserved]\z/o ? $a : "%\U$1" | ||||
320 | } | ||||
321 | return $other; | ||||
322 | } | ||||
323 | |||||
324 | # Compare two URIs, subclasses will provide a more correct implementation | ||||
325 | sub eq { | ||||
326 | my($self, $other) = @_; | ||||
327 | $self = URI->new($self, $other) unless ref $self; | ||||
328 | $other = URI->new($other, $self) unless ref $other; | ||||
329 | ref($self) eq ref($other) && # same class | ||||
330 | $self->canonical->as_string eq $other->canonical->as_string; | ||||
331 | } | ||||
332 | |||||
333 | # generic-URI transformation methods | ||||
334 | sub abs { $_[0]; } | ||||
335 | sub rel { $_[0]; } | ||||
336 | |||||
337 | sub secure { 0 } | ||||
338 | |||||
339 | # help out Storable | ||||
340 | sub STORABLE_freeze { | ||||
341 | my($self, $cloning) = @_; | ||||
342 | return $$self; | ||||
343 | } | ||||
344 | |||||
345 | sub STORABLE_thaw { | ||||
346 | my($self, $cloning, $str) = @_; | ||||
347 | $$self = $str; | ||||
348 | } | ||||
349 | |||||
350 | 1 | 14µs | 1; | ||
351 | |||||
352 | __END__ | ||||
# spent 49µs within URI::CORE:match which was called 14 times, avg 4µs/call:
# 4 times (15µs+0s) by URI::_scheme at line 173, avg 4µs/call
# 2 times (15µs+0s) by URI::_init at line 83, avg 8µs/call
# 2 times (9µs+0s) by URI::new at line 48, avg 4µs/call
# 2 times (5µs+0s) by URI::implementor at line 103, avg 2µs/call
# 2 times (3µs+0s) by URI::canonical at line 308, avg 2µs/call
# 2 times (2µs+0s) by URI::canonical at line 309, avg 1µs/call | |||||
# spent 177µs within URI::CORE:regcomp which was called 5 times, avg 35µs/call:
# once (45µs+0s) by URI::new at line 48
# once (42µs+0s) by URI::_scheme at line 173
# once (37µs+0s) by URI::_uric_escape at line 93
# once (34µs+0s) by URI::_init at line 83
# once (19µs+0s) by URI::implementor at line 103 | |||||
# spent 24µs within URI::CORE:subst which was called 13 times, avg 2µs/call:
# 2 times (9µs+0s) by URI::_uric_escape at line 93, avg 4µs/call
# 2 times (4µs+0s) by URI::new at line 45, avg 2µs/call
# 2 times (4µs+0s) by URI::new at line 42, avg 2µs/call
# 2 times (4µs+0s) by URI::new at line 44, avg 2µs/call
# 2 times (1µs+0s) by URI::new at line 43, avg 500ns/call
# once (1µs+0s) by URI::implementor at line 128
# once (1µs+0s) by URI::implementor at line 126
# once (0s+0s) by URI::implementor at line 127 |