Filename | /home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/RTP/Webmerge/Path.pm |
Statements | Executed 261084 statements in 5.42s |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
13585 | 2 | 1 | 2.65s | 21.8s | importURI | RTP::Webmerge::Path::
19016 | 8 | 3 | 1.30s | 49.1s | exportURI | RTP::Webmerge::Path::
2719 | 13 | 5 | 254ms | 2.89s | check_path | RTP::Webmerge::Path::
2737 | 2 | 2 | 225ms | 290ms | res_path | RTP::Webmerge::Path::
13589 | 2 | 1 | 176ms | 176ms | CORE:ftdir (opcode) | RTP::Webmerge::Path::
21786 | 4 | 1 | 99.6ms | 99.6ms | CORE:subst (opcode) | RTP::Webmerge::Path::
16326 | 3 | 1 | 71.4ms | 71.4ms | CORE:match (opcode) | RTP::Webmerge::Path::
1 | 1 | 1 | 2.53ms | 4.17ms | BEGIN@43 | RTP::Webmerge::Path::
9 | 6 | 4 | 515µs | 909µs | chdir | RTP::Webmerge::Path::
1 | 1 | 1 | 94µs | 441µs | BEGIN@37 | RTP::Webmerge::Path::
1 | 1 | 1 | 88µs | 363µs | BEGIN@8 | RTP::Webmerge::Path::
4 | 2 | 2 | 73µs | 73µs | DESTROY | RTP::Webmerge::Path::
1 | 1 | 1 | 65µs | 365µs | BEGIN@40 | RTP::Webmerge::Path::
1 | 1 | 1 | 56µs | 56µs | BEGIN@26.11 | RTP::Webmerge::Path::
1 | 1 | 1 | 55µs | 88µs | BEGIN@10 | RTP::Webmerge::Path::
1 | 1 | 1 | 54µs | 141µs | BEGIN@9 | RTP::Webmerge::Path::
1 | 1 | 1 | 30µs | 30µs | BEGIN@32 | RTP::Webmerge::Path::
1 | 1 | 1 | 28µs | 28µs | BEGIN@29 | RTP::Webmerge::Path::
1 | 1 | 1 | 23µs | 23µs | BEGIN@23 | RTP::Webmerge::Path::
1 | 1 | 1 | 22µs | 22µs | BEGIN@26 | RTP::Webmerge::Path::
0 | 0 | 0 | 0s | 0s | EOD | RTP::Webmerge::Path::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | ################################################################################################### | ||||
2 | # Copyright 2013 by Marcel Greter | ||||
3 | # This file is part of Webmerge (GPL3) | ||||
4 | ################################################################################################### | ||||
5 | package RTP::Webmerge::Path; | ||||
6 | ################################################################################################### | ||||
7 | |||||
8 | 2 | 169µs | 2 | 638µs | # spent 363µs (88+275) within RTP::Webmerge::Path::BEGIN@8 which was called:
# once (88µs+275µs) by RTP::Webmerge::BEGIN@58 at line 8 # spent 363µs making 1 call to RTP::Webmerge::Path::BEGIN@8
# spent 275µs making 1 call to Exporter::import |
9 | 2 | 146µs | 2 | 228µs | # spent 141µs (54+87) within RTP::Webmerge::Path::BEGIN@9 which was called:
# once (54µs+87µs) by RTP::Webmerge::BEGIN@58 at line 9 # spent 141µs making 1 call to RTP::Webmerge::Path::BEGIN@9
# spent 87µs making 1 call to strict::import |
10 | 2 | 322µs | 2 | 121µs | # spent 88µs (55+33) within RTP::Webmerge::Path::BEGIN@10 which was called:
# once (55µs+33µs) by RTP::Webmerge::BEGIN@58 at line 10 # spent 88µs making 1 call to RTP::Webmerge::Path::BEGIN@10
# spent 33µs making 1 call to warnings::import |
11 | |||||
12 | ################################################################################################### | ||||
13 | |||||
14 | # global variables for various paths | ||||
15 | # $webroot: absolute path to htdocs root | ||||
16 | # $confroot: directory of the config file | ||||
17 | # $directory: our current working directory | ||||
18 | 1 | 2µs | our ($webroot, $confroot, $extroot, $directory); | ||
19 | |||||
20 | ################################################################################################### | ||||
21 | |||||
22 | # define our version string | ||||
23 | 1 | 149µs | 1 | 23µs | # spent 23µs within RTP::Webmerge::Path::BEGIN@23 which was called:
# once (23µs+0s) by RTP::Webmerge::BEGIN@58 at line 23 # spent 23µs making 1 call to RTP::Webmerge::Path::BEGIN@23 |
24 | |||||
25 | # load exporter and inherit from it | ||||
26 | 3 | 375µs | 2 | 79µs | BEGIN { use Exporter qw(); our @ISA = qw(Exporter) } # spent 56µs making 1 call to RTP::Webmerge::Path::BEGIN@26.11
# spent 22µs making 1 call to RTP::Webmerge::Path::BEGIN@26 |
27 | |||||
28 | # define our variables to be exported | ||||
29 | 1 | 185µs | 1 | 28µs | # spent 28µs within RTP::Webmerge::Path::BEGIN@29 which was called:
# once (28µs+0s) by RTP::Webmerge::BEGIN@58 at line 29 # spent 28µs making 1 call to RTP::Webmerge::Path::BEGIN@29 |
30 | |||||
31 | # define our functions to be exported | ||||
32 | 1 | 173µs | 1 | 30µs | # spent 30µs within RTP::Webmerge::Path::BEGIN@32 which was called:
# once (30µs+0s) by RTP::Webmerge::BEGIN@58 at line 32 # spent 30µs making 1 call to RTP::Webmerge::Path::BEGIN@32 |
33 | |||||
34 | ################################################################################################### | ||||
35 | |||||
36 | # use cwd to normalize paths | ||||
37 | 2 | 286µs | 2 | 788µs | # spent 441µs (94+347) within RTP::Webmerge::Path::BEGIN@37 which was called:
# once (94µs+347µs) by RTP::Webmerge::BEGIN@58 at line 37 # spent 441µs making 1 call to RTP::Webmerge::Path::BEGIN@37
# spent 347µs making 1 call to Exporter::import |
38 | |||||
39 | # use to parse path and filename | ||||
40 | 2 | 178µs | 2 | 665µs | # spent 365µs (65+300) within RTP::Webmerge::Path::BEGIN@40 which was called:
# once (65µs+300µs) by RTP::Webmerge::BEGIN@58 at line 40 # spent 365µs making 1 call to RTP::Webmerge::Path::BEGIN@40
# spent 300µs making 1 call to Exporter::import |
41 | |||||
42 | # import system path conversion functions | ||||
43 | 2 | 4.03ms | 2 | 4.66ms | # spent 4.17ms (2.53+1.64) within RTP::Webmerge::Path::BEGIN@43 which was called:
# once (2.53ms+1.64ms) by RTP::Webmerge::BEGIN@58 at line 43 # spent 4.17ms making 1 call to RTP::Webmerge::Path::BEGIN@43
# spent 491µs making 1 call to Exporter::import |
44 | |||||
45 | ################################################################################################### | ||||
46 | |||||
47 | # directory delimiter for supported OS | ||||
48 | sub EOD { $^O eq "MSWin32" ? '\\' : '/'; } | ||||
49 | |||||
50 | ################################################################################################### | ||||
51 | |||||
52 | # resolve URI to an absolute path on filesystem | ||||
53 | # directory has to exist, but not the actual file | ||||
54 | sub importURI | ||||
55 | # spent 21.8s (2.65+19.1) within RTP::Webmerge::Path::importURI which was called 13585 times, avg 1.60ms/call:
# 12350 times (2.40s+17.6s) by RTP::Webmerge::IO::CSS::incCSS at line 87 of webmerge/scripts/modules/RTP/Webmerge/IO/CSS.pm, avg 1.62ms/call
# 1235 times (249ms+1.56s) by RTP::Webmerge::IO::CSS::importCSS at line 133 of webmerge/scripts/modules/RTP/Webmerge/IO/CSS.pm, avg 1.47ms/call | ||||
56 | |||||
57 | # get URI and local path | ||||
58 | 13585 | 115ms | my ($uri, $relpath) = @_; | ||
59 | |||||
60 | # set relpath to webroot if nothin else given | ||||
61 | 13585 | 20.2ms | $relpath = $webroot unless defined $relpath; | ||
62 | |||||
63 | # remove hash tag and query string for URI | ||||
64 | 13585 | 363ms | 13585 | 57.8ms | my $suffix = $uri =~ s/([\;\?\#].*?)$// ? $1 : ''; # spent 57.8ms making 13585 calls to RTP::Webmerge::Path::CORE:subst, avg 4µs/call |
65 | |||||
66 | # get path and filename | ||||
67 | 13585 | 172ms | 13585 | 3.82s | my $path = dirname $uri; # spent 3.82s making 13585 calls to File::Basename::dirname, avg 281µs/call |
68 | 13585 | 165ms | 13585 | 3.56s | my $file = basename $uri; # spent 3.56s making 13585 calls to File::Basename::basename, avg 262µs/call |
69 | |||||
70 | # check if URI is absolute | ||||
71 | 13585 | 402ms | 13585 | 48.0ms | if ($uri =~ m/^\//) # spent 48.0ms making 13585 calls to RTP::Webmerge::Path::CORE:match, avg 4µs/call |
72 | { | ||||
73 | # absolute uris should be loaded from webroot | ||||
74 | # if you need another webroot, localize it before | ||||
75 | $path = realpath(join('/', $webroot, $path)); | ||||
76 | } | ||||
77 | else | ||||
78 | { | ||||
79 | # relative uris load from parent cssfile | ||||
80 | 13585 | 1.52s | 27170 | 11.5s | $path = realpath(rel2abs($path, $relpath)); # spent 10.4s making 13585 calls to File::Spec::Functions::__ANON__[File/Spec/Functions.pm:43], avg 764µs/call
# spent 1.08s making 13585 calls to Cwd::abs_path, avg 79µs/call |
81 | } | ||||
82 | |||||
83 | # assert that at least the path of the URI exists on the actual filesystem | ||||
84 | 13585 | 403ms | 13585 | 176ms | die "URI($uri) could not be imported (CWD: $relpath)\n" unless $path && -d $path; # spent 176ms making 13585 calls to RTP::Webmerge::Path::CORE:ftdir, avg 13µs/call |
85 | |||||
86 | # return the final absolute local path | ||||
87 | # the suffix is lost as we convert the | ||||
88 | # URI to a real absolute local filepath | ||||
89 | 13585 | 498ms | return join('/', $path, $file); | ||
90 | |||||
91 | } | ||||
92 | # EO sub importURI | ||||
93 | |||||
94 | ################################################################################################### | ||||
95 | |||||
96 | # export an absolute path on filesystem to an URI | ||||
97 | # maybe absolute or relative from the given path | ||||
98 | # if no path is given, we use the global webroot | ||||
99 | sub exportURI ($;$$) | ||||
100 | # spent 49.1s (1.30+47.8) within RTP::Webmerge::Path::exportURI which was called 19016 times, avg 2.58ms/call:
# 12350 times (842ms+29.8s) by RTP::Webmerge::IO::CSS::readCSS at line 113 of webmerge/scripts/modules/RTP/Webmerge/IO/CSS.pm, avg 2.48ms/call
# 6574 times (430ms+17.7s) by RTP::Webmerge::IO::CSS::exportCSS at line 153 of webmerge/scripts/modules/RTP/Webmerge/IO/CSS.pm, avg 2.76ms/call
# 18 times (27.1ms+88.0ms) by RTP::Webmerge::Merge::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/RTP/Webmerge/Merge.pm:480] at line 363 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 6.39ms/call
# 18 times (1.02ms+38.4ms) by RTP::Webmerge::Merge::writer at line 116 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 2.19ms/call
# 18 times (924µs+37.8ms) by RTP::Webmerge::Checksum::crcCheckEntry at line 134 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm, avg 2.15ms/call
# 18 times (960µs+37.5ms) by RTP::Webmerge::Checksum::crcCheckEntry at line 90 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm, avg 2.13ms/call
# 18 times (889µs+36.1ms) by RTP::Webmerge::Checksum::crcCheckEntry at line 121 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm, avg 2.06ms/call
# 2 times (102µs+4.00ms) by RTP::Webmerge::Merge::collect at line 233 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 2.05ms/call | ||||
101 | |||||
102 | # get input variables | ||||
103 | 19016 | 190ms | my ($path, $relpath, $abs) = @_; | ||
104 | |||||
105 | # set relpath to webroot if nothin else given | ||||
106 | 19016 | 45.2ms | $relpath = $webroot unless defined $relpath; | ||
107 | |||||
108 | # relative URI from relpath | ||||
109 | 19016 | 257ms | 19016 | 47.8s | my $uri = abs2rel($path, $relpath); # spent 47.8s making 19016 calls to File::Spec::Functions::__ANON__[File/Spec/Functions.pm:43], avg 2.51ms/call |
110 | |||||
111 | # normalize directory delimiters on win | ||||
112 | 19016 | 91.6ms | $uri =~ s/\\+/\//g if $^O eq "MSWin32"; | ||
113 | |||||
114 | # create absolute URI if set | ||||
115 | 19016 | 25.3ms | $uri = '/' . $uri if $abs; | ||
116 | |||||
117 | # return URI | ||||
118 | 19016 | 423ms | return $uri; | ||
119 | |||||
120 | } | ||||
121 | # EO sub exportURI | ||||
122 | |||||
123 | ################################################################################################### | ||||
124 | |||||
125 | # resolve path with special markers for directories | ||||
126 | # will replace {EXT}, {WWW} and {CONF} is given paths | ||||
127 | # also make relative paths relative to current directory | ||||
128 | sub res_path ($) | ||||
129 | # spent 290ms (225+65.1) within RTP::Webmerge::Path::res_path which was called 2737 times, avg 106µs/call:
# 2719 times (224ms+64.9ms) by RTP::Webmerge::Path::check_path at line 160, avg 106µs/call
# 18 times (1.10ms+265µs) by RTP::Webmerge::collectOutputs at line 129 of webmerge/scripts/modules/RTP/Webmerge.pm, avg 76µs/call | ||||
130 | |||||
131 | # get path string | ||||
132 | 2737 | 10.4ms | my ($path) = @_; | ||
133 | |||||
134 | # make some assertions and give die message from parent | ||||
135 | 2737 | 4.34ms | Carp::croak "check_path with undefined path called" if not defined $path; | ||
136 | 2737 | 7.59ms | Carp::croak "check_path with empty path called" if $path eq ''; | ||
137 | |||||
138 | # replace variables within path | ||||
139 | # make dollar sign mandatory in future | ||||
140 | 2737 | 62.0ms | 2736 | 19.5ms | $path =~ s/\$?\{EXT\}/$extroot/gm if $extroot; # spent 19.5ms making 2736 calls to RTP::Webmerge::Path::CORE:subst, avg 7µs/call |
141 | 2737 | 44.1ms | 2730 | 11.0ms | $path =~ s/\$?\{WWW\}/$webroot/gm if $webroot; # spent 11.0ms making 2730 calls to RTP::Webmerge::Path::CORE:subst, avg 4µs/call |
142 | 2737 | 66.1ms | 2735 | 11.3ms | $path =~ s/\$?\{CONF\}/$confroot/gm if $confroot; # spent 11.3ms making 2735 calls to RTP::Webmerge::Path::CORE:subst, avg 4µs/call |
143 | |||||
144 | # return if path is already absolute | ||||
145 | 2737 | 110ms | 2737 | 23.4ms | return $path if $path =~m /^(?:\/|[a-zA-Z]:)/; # spent 23.4ms making 2737 calls to RTP::Webmerge::Path::CORE:match, avg 9µs/call |
146 | |||||
147 | # prepended current directory and return | ||||
148 | 43 | 1.07ms | return join('/', $directory || '.', $path); | ||
149 | |||||
150 | } | ||||
151 | |||||
152 | ################################################################################################### | ||||
153 | |||||
154 | # same as resolve path but check for existence of the parent directory | ||||
155 | # will resolve path to current filesystem and returns an absolute path | ||||
156 | sub check_path ($) | ||||
157 | # spent 2.89s (254ms+2.64) within RTP::Webmerge::Path::check_path which was called 2719 times, avg 1.06ms/call:
# 2614 times (245ms+2.54s) by RTP::Webmerge::IO::readfile at line 112 of webmerge/scripts/modules/RTP/Webmerge/IO.pm, avg 1.07ms/call
# 39 times (3.51ms+36.1ms) by RTP::Webmerge::IO::writefile at line 184 of webmerge/scripts/modules/RTP/Webmerge/IO.pm, avg 1.01ms/call
# 18 times (1.69ms+17.5ms) by RTP::Webmerge::Merge::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/RTP/Webmerge/Merge.pm:480] at line 353 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 1.07ms/call
# 18 times (1.53ms+16.2ms) by RTP::Webmerge::Checksum::crcCheckEntry at line 134 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm, avg 982µs/call
# 18 times (1.47ms+14.9ms) by RTP::Webmerge::Checksum::crcCheckEntry at line 104 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm, avg 910µs/call
# 4 times (315µs+2.87ms) by RTP::Webmerge::Prepare::prepare at line 61 of webmerge/scripts/modules/RTP/Webmerge/Prepare.pm, avg 796µs/call
# 2 times (160µs+1.65ms) by RTP::Webmerge::Merge::collect at line 229 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 903µs/call
# once (82µs+804µs) by main::RUNTIME at line 399 of webmerge/scripts/webmerge.pl
# once (105µs+777µs) by main::RUNTIME at line 241 of webmerge/scripts/webmerge.pl
# once (69µs+715µs) by main::get_xml at line 280 of webmerge/scripts/webmerge.pl
# once (71µs+699µs) by main::RUNTIME at line 400 of webmerge/scripts/webmerge.pl
# once (64µs+668µs) by main::read_xml at line 307 of webmerge/scripts/webmerge.pl
# once (68µs+558µs) by main::RUNTIME at line 247 of webmerge/scripts/webmerge.pl | ||||
158 | |||||
159 | # resolve the path string | ||||
160 | 2719 | 33.1ms | 2719 | 289ms | my $path = &res_path; # spent 289ms making 2719 calls to RTP::Webmerge::Path::res_path, avg 106µs/call |
161 | |||||
162 | # create absolute path for the directory and re-add filename | ||||
163 | # abs_path will error out if the given path does not exist | ||||
164 | 2719 | 382ms | 8157 | 2.35s | return join('/', abs_path(dirname($path)), basename($path)); # spent 1.12s making 2719 calls to File::Basename::dirname, avg 411µs/call
# spent 1.02s making 2719 calls to File::Basename::basename, avg 374µs/call
# spent 213ms making 2719 calls to Cwd::abs_path, avg 78µs/call |
165 | |||||
166 | } | ||||
167 | |||||
168 | ################################################################################################### | ||||
169 | |||||
170 | # change current directory | ||||
171 | # returns an object you have to hold on | ||||
172 | # as soon as the object is destroyed we | ||||
173 | # restore the previous current directory | ||||
174 | sub chdir | ||||
175 | # spent 909µs (515+394) within RTP::Webmerge::Path::chdir which was called 9 times, avg 101µs/call:
# 2 times (238µs+210µs) by RTP::Webmerge::collectOutputs at line 100 of webmerge/scripts/modules/RTP/Webmerge.pm, avg 224µs/call
# 2 times (184µs+184µs) by RTP::Webmerge::Merge::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/RTP/Webmerge/Merge.pm:480] at line 336 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 184µs/call
# 2 times (34µs+0s) by RTP::Webmerge::Prepare::prepare at line 51 of webmerge/scripts/modules/RTP/Webmerge/Prepare.pm, avg 17µs/call
# once (21µs+0s) by RTP::Webmerge::collectOutputs at line 89 of webmerge/scripts/modules/RTP/Webmerge.pm
# once (21µs+0s) by RTP::Webmerge::Checksum::crcCheck at line 161 of webmerge/scripts/modules/RTP/Webmerge/Checksum.pm
# once (16µs+0s) by RTP::Webmerge::Merge::merger at line 497 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm | ||||
176 | |||||
177 | # chdir arguments | ||||
178 | 9 | 51µs | my ($self, $chdirs) = @_; | ||
179 | |||||
180 | # assert that current has some value | ||||
181 | 9 | 9µs | $directory = abs_path '.' unless $directory; | ||
182 | |||||
183 | # assertion that we have some valid arguments | ||||
184 | 9 | 134µs | return unless $chdirs && scalar(@{$chdirs}) > 0; | ||
185 | |||||
186 | # create a new variable | ||||
187 | 4 | 12µs | my $dir = $directory; | ||
188 | |||||
189 | # accept array as chdirs argument | ||||
190 | 4 | 23µs | foreach my $chdir (@{$chdirs || []}) | ||
191 | { | ||||
192 | # now change our current directory variable | ||||
193 | 4 | 144µs | 4 | 52µs | if ($chdir =~ m/^(?:\/|[a-z]:)/i) { $directory = $chdir; } # spent 52µs making 4 calls to RTP::Webmerge::Path::CORE:match, avg 13µs/call |
194 | 4 | 32µs | else { $directory = join('/', $directory, $chdir); } | ||
195 | } | ||||
196 | |||||
197 | # give a message to the console for debug | ||||
198 | # print "changed directory => $directory\n"; | ||||
199 | |||||
200 | # assertion that the directory does actually exist | ||||
201 | 4 | 162µs | 4 | 88µs | die "chdir failed, directory <$directory> does not exist!\n" unless -d $directory; # spent 88µs making 4 calls to RTP::Webmerge::Path::CORE:ftdir, avg 22µs/call |
202 | |||||
203 | # resolve to an absolute path | ||||
204 | 4 | 322µs | 4 | 254µs | $directory = abs_path($directory); # spent 254µs making 4 calls to Cwd::abs_path, avg 64µs/call |
205 | |||||
206 | # bless scalar reference | ||||
207 | 4 | 131µs | return bless \ $dir, $self; | ||
208 | |||||
209 | } | ||||
210 | |||||
211 | ################################################################################################### | ||||
212 | |||||
213 | # restore the saved directory | ||||
214 | sub DESTROY | ||||
215 | # spent 73µs within RTP::Webmerge::Path::DESTROY which was called 4 times, avg 18µs/call:
# 2 times (46µs+0s) by RTP::Webmerge::Merge::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/RTP/Webmerge/Merge.pm:480] at line 512 of webmerge/scripts/modules/RTP/Webmerge/Merge.pm, avg 23µs/call
# 2 times (27µs+0s) by RTP::Webmerge::collectOutputs at line 115 of webmerge/scripts/modules/RTP/Webmerge.pm, avg 14µs/call | ||||
216 | |||||
217 | # destroy arguments | ||||
218 | 4 | 16µs | my ($self) = @_; | ||
219 | |||||
220 | # restore old directory | ||||
221 | 4 | 110µs | $directory = ${$self}; | ||
222 | |||||
223 | # give a message to the console for debug | ||||
224 | # print "restored directory => $directory\n"; | ||||
225 | |||||
226 | } | ||||
227 | |||||
228 | ################################################################################################### | ||||
229 | ################################################################################################### | ||||
230 | 1 | 17µs | 1; | ||
sub RTP::Webmerge::Path::CORE:ftdir; # opcode | |||||
# spent 71.4ms within RTP::Webmerge::Path::CORE:match which was called 16326 times, avg 4µs/call:
# 13585 times (48.0ms+0s) by RTP::Webmerge::Path::importURI at line 71, avg 4µs/call
# 2737 times (23.4ms+0s) by RTP::Webmerge::Path::res_path at line 145, avg 9µs/call
# 4 times (52µs+0s) by RTP::Webmerge::Path::chdir at line 193, avg 13µs/call | |||||
# spent 99.6ms within RTP::Webmerge::Path::CORE:subst which was called 21786 times, avg 5µs/call:
# 13585 times (57.8ms+0s) by RTP::Webmerge::Path::importURI at line 64, avg 4µs/call
# 2736 times (19.5ms+0s) by RTP::Webmerge::Path::res_path at line 140, avg 7µs/call
# 2735 times (11.3ms+0s) by RTP::Webmerge::Path::res_path at line 142, avg 4µs/call
# 2730 times (11.0ms+0s) by RTP::Webmerge::Path::res_path at line 141, avg 4µs/call |