Filename | /home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm |
Statements | Executed 1088553 statements in 22.7s |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
103668 | 9 | 2 | 9.71s | 36.5s | style | OCBNET::Spritesets::CSS::Block::
8752 | 2 | 1 | 2.15s | 2.50s | clean | OCBNET::Spritesets::CSS::Block::
172228 | 2 | 1 | 1.74s | 1.74s | styles | OCBNET::Spritesets::CSS::Block::
20108 | 2 | 1 | 1.42s | 1.83s | text | OCBNET::Spritesets::CSS::Block::
10072 | 2 | 2 | 1.25s | 1.99s | render (recurses: max depth 3, inclusive time 1.61s) | OCBNET::Spritesets::CSS::Block::
10048 | 2 | 1 | 1.16s | 1.47s | new | OCBNET::Spritesets::CSS::Block::
13100 | 1 | 1 | 998ms | 3.33s | option | OCBNET::Spritesets::CSS::Block::
14540 | 3 | 2 | 921ms | 2.65s | body (recurses: max depth 2, inclusive time 395ms) | OCBNET::Spritesets::CSS::Block::
55360 | 5 | 2 | 619ms | 619ms | blocks | OCBNET::Spritesets::CSS::Block::
27764 | 4 | 2 | 610ms | 610ms | canvas (recurses: max depth 1, inclusive time 114ms) | OCBNET::Spritesets::CSS::Block::
35200 | 3 | 2 | 473ms | 473ms | head | OCBNET::Spritesets::CSS::Block::
8752 | 2 | 1 | 454ms | 5.81s | parse | OCBNET::Spritesets::CSS::Block::
41172 | 3 | 2 | 425ms | 425ms | options | OCBNET::Spritesets::CSS::Block::
40240 | 1 | 1 | 210ms | 210ms | CORE:match (opcode) | OCBNET::Spritesets::CSS::Block::
40240 | 1 | 1 | 141ms | 141ms | CORE:regcomp (opcode) | OCBNET::Spritesets::CSS::Block::
10072 | 2 | 1 | 101ms | 101ms | parent | OCBNET::Spritesets::CSS::Block::
5036 | 1 | 1 | 65.3ms | 65.3ms | footer | OCBNET::Spritesets::CSS::Block::
1 | 1 | 1 | 7.95ms | 23.8ms | BEGIN@20 | OCBNET::Spritesets::CSS::Block::
1 | 1 | 1 | 6.13ms | 16.0ms | BEGIN@23 | OCBNET::Spritesets::CSS::Block::
1 | 1 | 1 | 89µs | 120µs | BEGIN@15 | OCBNET::Spritesets::CSS::Block::
1 | 1 | 1 | 86µs | 183µs | BEGIN@14 | OCBNET::Spritesets::CSS::Block::
0 | 0 | 0 | 0s | 0s | spriteset | OCBNET::Spritesets::CSS::Block::
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 | # a css block inside curly braces or root and can be | ||||
6 | # anything, from a selector to a media-query declaration | ||||
7 | # any block can have any kind of sublocks, we dont care | ||||
8 | # we do not really support the setting of styles directly | ||||
9 | # but you should be able to safely add new style definitions | ||||
10 | #################################################################################################### | ||||
11 | package OCBNET::Spritesets::CSS::Block; | ||||
12 | #################################################################################################### | ||||
13 | |||||
14 | 2 | 170µs | 2 | 280µs | # spent 183µs (86+97) within OCBNET::Spritesets::CSS::Block::BEGIN@14 which was called:
# once (86µs+97µs) by base::import at line 14 # spent 183µs making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@14
# spent 97µs making 1 call to strict::import |
15 | 2 | 167µs | 2 | 152µs | # spent 120µs (89+31) within OCBNET::Spritesets::CSS::Block::BEGIN@15 which was called:
# once (89µs+31µs) by base::import at line 15 # spent 120µs making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@15
# spent 31µs making 1 call to warnings::import |
16 | |||||
17 | #################################################################################################### | ||||
18 | |||||
19 | # store styles and options in collections | ||||
20 | 2 | 599µs | 1 | 23.8ms | # spent 23.8ms (7.95+15.8) within OCBNET::Spritesets::CSS::Block::BEGIN@20 which was called:
# once (7.95ms+15.8ms) by base::import at line 20 # spent 23.8ms making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@20 |
21 | |||||
22 | # load functions to parse block body styles | ||||
23 | 2 | 5.83ms | 2 | 16.6ms | # spent 16.0ms (6.13+9.87) within OCBNET::Spritesets::CSS::Block::BEGIN@23 which was called:
# once (6.13ms+9.87ms) by base::import at line 23 # spent 16.0ms making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@23
# spent 589µs making 1 call to Exporter::import |
24 | |||||
25 | #################################################################################################### | ||||
26 | |||||
27 | # parse block body styles | ||||
28 | # do this if you want to mangle the css | ||||
29 | # render will use the parsed declarations | ||||
30 | # but only if parse was called once, so we can decide | ||||
31 | # which blocks we want to touch and which stay untouched | ||||
32 | #************************************************************************************************** | ||||
33 | sub parse | ||||
34 | # spent 5.81s (454ms+5.36) within OCBNET::Spritesets::CSS::Block::parse which was called 8752 times, avg 664µs/call:
# 4744 times (143ms+888ms) by OCBNET::Spritesets::CSS::Parser::process at line 541 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 217µs/call
# 4008 times (311ms+4.47s) by OCBNET::Spritesets::CSS::Parser::process at line 466 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 1.19ms/call | ||||
35 | |||||
36 | # get selector block | ||||
37 | 8752 | 31.4ms | my ($selector) = @_; | ||
38 | |||||
39 | # blocker to not parse more than once | ||||
40 | 8752 | 211ms | return if $selector->{'declarations'}; | ||
41 | |||||
42 | # parse declarations from the block body text (only real styles) | ||||
43 | 4752 | 233ms | 9504 | 5.36s | $selector->{'declarations'} = $parse_declarations->(\$selector->body); # spent 4.48s making 4752 calls to OCBNET::CSS::Parser::CSS::__ANON__[webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm:154], avg 942µs/call
# spent 881ms making 4752 calls to OCBNET::Spritesets::CSS::Block::body, avg 185µs/call |
44 | |||||
45 | } | ||||
46 | |||||
47 | # remove certain parse styles | ||||
48 | #************************************************************************************************** | ||||
49 | sub clean | ||||
50 | # spent 2.50s (2.15+352ms) within OCBNET::Spritesets::CSS::Block::clean which was called 8752 times, avg 286µs/call:
# 4744 times (905ms+106ms) by OCBNET::Spritesets::CSS::Parser::process at line 554 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 213µs/call
# 4008 times (1.25s+245ms) by OCBNET::Spritesets::CSS::Parser::process at line 473 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 372µs/call | ||||
51 | |||||
52 | # get selector and regex | ||||
53 | # remove styles found by regex | ||||
54 | 8752 | 41.0ms | my ($selector, $regexp) = @_; | ||
55 | |||||
56 | # define default expression to clean all | ||||
57 | 8752 | 14.1ms | $regexp = qr// unless defined $regexp; | ||
58 | |||||
59 | # remove all background declarations now | ||||
60 | 40240 | 2.05s | 80480 | 352ms | @{$selector->{'declarations'}} = grep { # spent 210ms making 40240 calls to OCBNET::Spritesets::CSS::Block::CORE:match, avg 5µs/call
# spent 141ms making 40240 calls to OCBNET::Spritesets::CSS::Block::CORE:regcomp, avg 4µs/call |
61 | not $_->[2] =~ m/^\s*$regexp/is | ||||
62 | 8752 | 450ms | } @{$selector->{'declarations'}}; | ||
63 | |||||
64 | } | ||||
65 | # EO sub clean | ||||
66 | |||||
67 | |||||
68 | #################################################################################################### | ||||
69 | |||||
70 | # constructor | ||||
71 | #************************************************************************************************** | ||||
72 | sub new | ||||
73 | # spent 1.47s (1.16+315ms) within OCBNET::Spritesets::CSS::Block::new which was called 10048 times, avg 147µs/call:
# 5036 times (547ms+153ms) by OCBNET::CSS::Parser::CSS::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm:175] at line 167 of webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm, avg 139µs/call
# 5012 times (611ms+161ms) by OCBNET::CSS::Parser::CSS::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm:252] at line 223 of webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm, avg 154µs/call | ||||
74 | |||||
75 | # get class name | ||||
76 | # parent is optional | ||||
77 | 10048 | 47.2ms | my ($pckg, $parent) = @_; | ||
78 | |||||
79 | # create new object | ||||
80 | 10048 | 570ms | 20096 | 315ms | my $block = { # spent 315ms making 20096 calls to OCBNET::Spritesets::CSS::Collection::new, avg 16µs/call |
81 | |||||
82 | # defines type of block | ||||
83 | # can i.e. be css selectors | ||||
84 | 'head' => '', | ||||
85 | |||||
86 | # optional sub-blocks | ||||
87 | 'blocks' => [], | ||||
88 | |||||
89 | # optional footer text | ||||
90 | 'footer' => '', | ||||
91 | |||||
92 | # parents array | ||||
93 | 'ref' => [], | ||||
94 | |||||
95 | # the actual parsed styles (use getter methods) | ||||
96 | 'styles' => new OCBNET::Spritesets::CSS::Collection, | ||||
97 | 'options' => new OCBNET::Spritesets::CSS::Collection | ||||
98 | |||||
99 | }; | ||||
100 | |||||
101 | # parent is optional | ||||
102 | 10048 | 30.8ms | if (defined $parent) | ||
103 | { | ||||
104 | # connect parent node | ||||
105 | 10048 | 38.8ms | $block->{'parent'} = $parent; | ||
106 | # we are one of our parents children | ||||
107 | 10048 | 64.0ms | push(@{$parent->{'blocks'}}, $block); | ||
108 | } | ||||
109 | |||||
110 | # bless into correct package | ||||
111 | 10048 | 376ms | return bless $block, $pckg; | ||
112 | |||||
113 | } | ||||
114 | # EO constructor | ||||
115 | |||||
116 | #################################################################################################### | ||||
117 | # getter methods for object attributes | ||||
118 | #################################################################################################### | ||||
119 | |||||
120 | # return code fragments | ||||
121 | #************************************************************************************************** | ||||
122 | 35200 | 891ms | # spent 473ms within OCBNET::Spritesets::CSS::Block::head which was called 35200 times, avg 13µs/call:
# 15056 times (192ms+0s) by OCBNET::Spritesets::CSS::Block::text at line 244, avg 13µs/call
# 10072 times (154ms+0s) by OCBNET::Spritesets::CSS::Parser::read at line 117 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 15µs/call
# 10072 times (126ms+0s) by OCBNET::Spritesets::CSS::Block::render at line 151, avg 13µs/call | ||
123 | 5036 | 95.6ms | # spent 65.3ms within OCBNET::Spritesets::CSS::Block::footer which was called 5036 times, avg 13µs/call:
# 5036 times (65.3ms+0s) by OCBNET::Spritesets::CSS::Block::render at line 164, avg 13µs/call | ||
124 | |||||
125 | # return the sub-blocks list | ||||
126 | #************************************************************************************************** | ||||
127 | 55360 | 1.46s | # spent 619ms within OCBNET::Spritesets::CSS::Block::blocks which was called 55360 times, avg 11µs/call:
# 20120 times (206ms+0s) by OCBNET::Spritesets::CSS::Parser::read at line 103 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 10µs/call
# 20108 times (219ms+0s) by OCBNET::Spritesets::CSS::Block::text at line 244, avg 11µs/call
# 10072 times (121ms+0s) by OCBNET::Spritesets::CSS::Block::render at line 154, avg 12µs/call
# 5036 times (70.5ms+0s) by OCBNET::Spritesets::CSS::Block::body at line 207, avg 14µs/call
# 24 times (2.20ms+0s) by OCBNET::Spritesets::CSS::Parser::read at line 101 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 92µs/call | ||
128 | |||||
129 | # return the parent block object | ||||
130 | #************************************************************************************************** | ||||
131 | 10072 | 352ms | sub parent { $_[0]->{'parent'} } | ||
132 | |||||
133 | # return the collection objects | ||||
134 | #************************************************************************************************** | ||||
135 | 172228 | 4.33s | sub styles { $_[0]->{'styles'} } | ||
136 | 41172 | 919ms | # spent 425ms within OCBNET::Spritesets::CSS::Block::options which was called 41172 times, avg 10µs/call:
# 21100 times (200ms+0s) by OCBNET::Spritesets::CSS::Block::option at line 300, avg 9µs/call
# 10036 times (113ms+0s) by OCBNET::Spritesets::CSS::Parser::rehash at line 207 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 11µs/call
# 10036 times (112ms+0s) by OCBNET::Spritesets::CSS::Parser::rehash at line 216 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 11µs/call | ||
137 | |||||
138 | #################################################################################################### | ||||
139 | |||||
140 | # render the mangled css | ||||
141 | # must be the same as on read | ||||
142 | # if no styles have been added | ||||
143 | #************************************************************************************************** | ||||
144 | sub render | ||||
145 | # spent 1.99s (1.25+736ms) within OCBNET::Spritesets::CSS::Block::render which was called 10072 times, avg 197µs/call:
# 10048 times (1.24s+-803ms) by OCBNET::Spritesets::CSS::Block::body at line 207, avg 44µs/call
# 24 times (7.84ms+1.54s) by RTP::Webmerge::Process::CSS::Spritesets::spritesets at line 105 of webmerge/scripts/modules/RTP/Webmerge/Process/CSS/Spritesets.pm, avg 64.4ms/call | ||||
146 | |||||
147 | # get block to render | ||||
148 | 10072 | 27.4ms | my ($block) = @_; | ||
149 | |||||
150 | # first add the header | ||||
151 | 10072 | 112ms | 10072 | 126ms | my $css = $block->head; # spent 126ms making 10072 calls to OCBNET::Spritesets::CSS::Block::head, avg 13µs/call |
152 | |||||
153 | # check if we have any sub-blocks | ||||
154 | 10072 | 145ms | 10072 | 121ms | if (scalar($block->blocks)) # spent 121ms making 10072 calls to OCBNET::Spritesets::CSS::Block::blocks, avg 12µs/call |
155 | { | ||||
156 | |||||
157 | # create a new scope if we are a child | ||||
158 | 5036 | 57.1ms | 5036 | 50.1ms | $css .= "{" if $block->parent; # spent 50.1ms making 5036 calls to OCBNET::Spritesets::CSS::Block::parent, avg 10µs/call |
159 | |||||
160 | # render and add the block body | ||||
161 | 5036 | 67.2ms | 5036 | 1.54s | $css .= $block->body; # spent 1.93s making 5036 calls to OCBNET::Spritesets::CSS::Block::body, avg 384µs/call, recursion: max depth 2, sum of overlapping time 395ms |
162 | |||||
163 | # finally add the footer | ||||
164 | 5036 | 68.3ms | 5036 | 65.3ms | $css .= $block->footer; # spent 65.3ms making 5036 calls to OCBNET::Spritesets::CSS::Block::footer, avg 13µs/call |
165 | |||||
166 | # close the scope if we are a child | ||||
167 | 5036 | 63.6ms | 5036 | 51.3ms | $css .= "}" if $block->parent; # spent 51.3ms making 5036 calls to OCBNET::Spritesets::CSS::Block::parent, avg 10µs/call |
168 | |||||
169 | } | ||||
170 | # EO if has sub-blocks | ||||
171 | |||||
172 | # return the css | ||||
173 | 10072 | 198ms | return $css; | ||
174 | |||||
175 | } | ||||
176 | # EO sub render | ||||
177 | |||||
178 | #################################################################################################### | ||||
179 | |||||
180 | # render the body css code | ||||
181 | # either mangled or original | ||||
182 | #************************************************************************************************** | ||||
183 | sub body | ||||
184 | # spent 2.65s (921ms+1.73) within OCBNET::Spritesets::CSS::Block::body which was called 14540 times, avg 182µs/call:
# 5036 times (317ms+1.22s) by OCBNET::Spritesets::CSS::Block::render at line 161, avg 305µs/call
# 4752 times (374ms+507ms) by OCBNET::Spritesets::CSS::Block::parse at line 43, avg 185µs/call
# 4752 times (231ms+0s) by OCBNET::Spritesets::CSS::Parser::process at line 566 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 49µs/call | ||||
185 | |||||
186 | # init variable | ||||
187 | 14540 | 33.6ms | my $css = ''; | ||
188 | |||||
189 | # get block to render | ||||
190 | 14540 | 32.3ms | my ($block) = @_; | ||
191 | |||||
192 | # check if we have any declarations | ||||
193 | # this can overrule the whole rendering | ||||
194 | # it is used to mangle only certain blocks | ||||
195 | # without interferring with any other blocks | ||||
196 | 14540 | 298ms | if ($block->{'declarations'}) | ||
197 | { | ||||
198 | # put back all declarations | ||||
199 | $css .= join "", map | ||||
200 | { sprintf "%s%s", @{$_}; } | ||||
201 | @{$block->{'declarations'}}; | ||||
202 | } | ||||
203 | # render the original code | ||||
204 | else | ||||
205 | { | ||||
206 | # render all sub-blocks to the css | ||||
207 | 5036 | 241ms | 15084 | 512ms | $css .= $_->render foreach $block->blocks; # spent 2.05s making 10048 calls to OCBNET::Spritesets::CSS::Block::render, avg 204µs/call, recursion: max depth 3, sum of overlapping time 1.61s
# spent 70.5ms making 5036 calls to OCBNET::Spritesets::CSS::Block::blocks, avg 14µs/call |
208 | } | ||||
209 | |||||
210 | # return the css | ||||
211 | 14540 | 279ms | return $css; | ||
212 | |||||
213 | } | ||||
214 | # EO sub body | ||||
215 | |||||
216 | #################################################################################################### | ||||
217 | |||||
218 | # return block text | ||||
219 | #************************************************************************************************** | ||||
220 | sub text | ||||
221 | # spent 1.83s (1.42+411ms) within OCBNET::Spritesets::CSS::Block::text which was called 20108 times, avg 91µs/call:
# 10072 times (774ms+226ms) by OCBNET::Spritesets::CSS::Parser::read at line 128 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 99µs/call
# 10036 times (648ms+185ms) by OCBNET::Spritesets::CSS::Parser::read at line 175 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 83µs/call | ||||
222 | |||||
223 | # init variable | ||||
224 | 20108 | 40.1ms | my $css = ''; | ||
225 | |||||
226 | # get block to render | ||||
227 | 20108 | 41.4ms | my ($block) = @_; | ||
228 | |||||
229 | # check if we have any declarations | ||||
230 | # this can overrule the whole rendering | ||||
231 | # it is used to mangle only certain blocks | ||||
232 | # without interferring with any other blocks | ||||
233 | 20108 | 89.5ms | if ($block->{'declarations'}) | ||
234 | { | ||||
235 | # put back all declarations | ||||
236 | $css .= join "", map | ||||
237 | { sprintf "%s%s", @{$_}; } | ||||
238 | @{$block->{'declarations'}}; | ||||
239 | } | ||||
240 | # render the original code | ||||
241 | else | ||||
242 | { | ||||
243 | # render all sub-blocks to the css | ||||
244 | 20108 | 502ms | 35164 | 411ms | $css .= $_->head foreach $block->blocks; # spent 219ms making 20108 calls to OCBNET::Spritesets::CSS::Block::blocks, avg 11µs/call
# spent 192ms making 15056 calls to OCBNET::Spritesets::CSS::Block::head, avg 13µs/call |
245 | } | ||||
246 | |||||
247 | # return the css | ||||
248 | 20108 | 393ms | return $css; | ||
249 | |||||
250 | } | ||||
251 | # EO sub body | ||||
252 | |||||
253 | #################################################################################################### | ||||
254 | # getter methods for block styles and options | ||||
255 | #################################################################################################### | ||||
256 | |||||
257 | # get parsed css style by name | ||||
258 | #************************************************************************************************** | ||||
259 | sub style | ||||
260 | # spent 36.5s (9.71+26.8) within OCBNET::Spritesets::CSS::Block::style which was called 103668 times, avg 352µs/call:
# 44352 times (4.55s+15.5s) by OCBNET::Spritesets::CSS::Parser::load at line 259 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 452µs/call
# 10036 times (851ms+2.06s) by OCBNET::Spritesets::CSS::Parser::load at line 253 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 291µs/call
# 9856 times (1.19s+2.81s) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 55 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 406µs/call
# 9856 times (848ms+1.63s) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 56 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 251µs/call
# 9856 times (692ms+1.61s) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 57 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 234µs/call
# 4928 times (441ms+821ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 71 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 256µs/call
# 4928 times (433ms+785ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 72 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 247µs/call
# 4928 times (379ms+752ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 69 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 230µs/call
# 4928 times (326ms+793ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 70 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 227µs/call | ||||
261 | |||||
262 | # get passed variables | ||||
263 | 103668 | 358ms | my ($self, $style) = @_; | ||
264 | |||||
265 | # do we have a valid style in current block | ||||
266 | 103668 | 4.11s | 302488 | 24.1s | if (defined $self->styles->get($style)) # spent 22.6s making 151244 calls to OCBNET::Spritesets::CSS::Collection::get, avg 149µs/call
# spent 1.51s making 151244 calls to OCBNET::Spritesets::CSS::Block::styles, avg 10µs/call |
267 | { | ||||
268 | # get style from current block styles | ||||
269 | return $self->styles->get($style); | ||||
270 | } | ||||
271 | # maybe we have a reference block | ||||
272 | # basically acts like css/cascading | ||||
273 | elsif (defined $self->{'ref'}) | ||||
274 | { | ||||
275 | # get style from referenced block styles | ||||
276 | foreach my $ref (@{$self->{'ref'}}) | ||||
277 | { | ||||
278 | 15608 | 600ms | 41968 | 2.67s | if (defined $ref->styles->get($style)) # spent 2.43s making 20984 calls to OCBNET::Spritesets::CSS::Collection::get, avg 116µs/call
# spent 235ms making 20984 calls to OCBNET::Spritesets::CSS::Block::styles, avg 11µs/call |
279 | { return $ref->styles->get($style); } | ||||
280 | } | ||||
281 | } | ||||
282 | |||||
283 | # return null | ||||
284 | 50716 | 1.10s | return undef; | ||
285 | |||||
286 | } | ||||
287 | # EO sub style | ||||
288 | |||||
289 | #################################################################################################### | ||||
290 | |||||
291 | # get parsed css comment option by name | ||||
292 | #************************************************************************************************** | ||||
293 | sub option | ||||
294 | # spent 3.33s (998ms+2.34) within OCBNET::Spritesets::CSS::Block::option which was called 13100 times, avg 254µs/call:
# 13100 times (998ms+2.34s) by OCBNET::Spritesets::CSS::Parser::rehash at line 227 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 254µs/call | ||||
295 | |||||
296 | # get passed variables | ||||
297 | 13100 | 40.2ms | my ($self, $option) = @_; | ||
298 | |||||
299 | # do we have a valid style in current block | ||||
300 | 13100 | 514ms | 42200 | 2.34s | if (defined $self->options->get($option)) # spent 2.14s making 21100 calls to OCBNET::Spritesets::CSS::Collection::get, avg 101µs/call
# spent 200ms making 21100 calls to OCBNET::Spritesets::CSS::Block::options, avg 9µs/call |
301 | { | ||||
302 | # get style from current block styles | ||||
303 | return $self->options->get($option); | ||||
304 | } | ||||
305 | # maybe we have a reference block | ||||
306 | # basically acts like css/cascading | ||||
307 | 5100 | 33.4ms | if (defined $self->{'ref'}) | ||
308 | { | ||||
309 | # get option from referenced block styles | ||||
310 | foreach my $ref (@{$self->{'ref'}}) | ||||
311 | { | ||||
312 | if (defined $ref->options->get($option)) | ||||
313 | { return $ref->options->get($option); } | ||||
314 | } | ||||
315 | } | ||||
316 | |||||
317 | # return null | ||||
318 | 5100 | 139ms | return undef; | ||
319 | |||||
320 | } | ||||
321 | # EO sub option | ||||
322 | |||||
323 | #################################################################################################### | ||||
324 | |||||
325 | # get canvas | ||||
326 | #************************************************************************************************** | ||||
327 | sub canvas | ||||
328 | # spent 610ms within OCBNET::Spritesets::CSS::Block::canvas which was called 27764 times, avg 22µs/call:
# 10036 times (221ms+34.6ms) by OCBNET::Spritesets::CSS::Parser::rehash at line 227 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 25µs/call
# 7872 times (114ms+-114ms) by OCBNET::Spritesets::CSS::Block::canvas at line 346, avg 0s/call
# 4928 times (139ms+39.2ms) by OCBNET::Spritesets::CSS::Parser::process at line 486 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 36µs/call
# 4928 times (135ms+40.4ms) by OCBNET::Spritesets::CSS::Parser::load at line 256 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 36µs/call | ||||
329 | |||||
330 | # get passed variables | ||||
331 | 27764 | 76.4ms | my ($self) = @_; | ||
332 | |||||
333 | # do we have a canvas on block | ||||
334 | 27764 | 401ms | if (defined $self->{'canvas'}) | ||
335 | { | ||||
336 | # get canvas from block | ||||
337 | return $self->{'canvas'}; | ||||
338 | } | ||||
339 | # maybe we have a reference block | ||||
340 | # basically acts like css/cascading | ||||
341 | 14188 | 84.0ms | if (defined $self->{'ref'}) | ||
342 | { | ||||
343 | # get canvas from referenced block styles | ||||
344 | foreach my $ref (@{$self->{'ref'}}) | ||||
345 | { | ||||
346 | 5088 | 116ms | 7872 | 0s | if (defined $ref->canvas) # spent 114ms making 7872 calls to OCBNET::Spritesets::CSS::Block::canvas, avg 15µs/call, recursion: max depth 1, sum of overlapping time 114ms |
347 | { return $ref->canvas; } | ||||
348 | } | ||||
349 | } | ||||
350 | |||||
351 | # return null | ||||
352 | 11404 | 200ms | return undef; | ||
353 | |||||
354 | } | ||||
355 | # EO sub option | ||||
356 | |||||
357 | #################################################################################################### | ||||
358 | |||||
359 | # get spriteset | ||||
360 | #************************************************************************************************** | ||||
361 | sub spriteset | ||||
362 | { | ||||
363 | |||||
364 | # get passed variables | ||||
365 | my ($self) = @_; | ||||
366 | |||||
367 | # do we have a canvas on block | ||||
368 | if (defined $self->{'qweasdqwe'}) | ||||
369 | { | ||||
370 | # get canvas from block | ||||
371 | return $self->{'qweasdqwe'}; | ||||
372 | } | ||||
373 | # maybe we have a reference block | ||||
374 | # basically acts like css/cascading | ||||
375 | if (defined $self->{'ref'}) | ||||
376 | { | ||||
377 | # get canvas from referenced block styles | ||||
378 | foreach my $ref (@{$self->{'ref'}}) | ||||
379 | { | ||||
380 | if (defined $ref->spriteset()) | ||||
381 | { return $ref->spriteset(); } | ||||
382 | } | ||||
383 | } | ||||
384 | |||||
385 | # return null | ||||
386 | return undef; | ||||
387 | |||||
388 | } | ||||
389 | # EO sub spriteset | ||||
390 | |||||
391 | #################################################################################################### | ||||
392 | #################################################################################################### | ||||
393 | 1 | 12µs | 1; | ||
# spent 210ms within OCBNET::Spritesets::CSS::Block::CORE:match which was called 40240 times, avg 5µs/call:
# 40240 times (210ms+0s) by OCBNET::Spritesets::CSS::Block::clean at line 60, avg 5µs/call | |||||
# spent 141ms within OCBNET::Spritesets::CSS::Block::CORE:regcomp which was called 40240 times, avg 4µs/call:
# 40240 times (141ms+0s) by OCBNET::Spritesets::CSS::Block::clean at line 60, avg 4µs/call |