← Index
NYTProf Performance Profile   « line view »
For webmerge/scripts/webmerge.pl
  Run on Mon Oct 7 02:42:42 2013
Reported on Mon Oct 7 03:03:19 2013

Filename/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm
StatementsExecuted 1088553 statements in 22.7s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
103668929.71s36.5sOCBNET::Spritesets::CSS::Block::::styleOCBNET::Spritesets::CSS::Block::style
8752212.15s2.50sOCBNET::Spritesets::CSS::Block::::cleanOCBNET::Spritesets::CSS::Block::clean
172228211.74s1.74sOCBNET::Spritesets::CSS::Block::::stylesOCBNET::Spritesets::CSS::Block::styles
20108211.42s1.83sOCBNET::Spritesets::CSS::Block::::textOCBNET::Spritesets::CSS::Block::text
10072221.25s1.99sOCBNET::Spritesets::CSS::Block::::renderOCBNET::Spritesets::CSS::Block::render (recurses: max depth 3, inclusive time 1.61s)
10048211.16s1.47sOCBNET::Spritesets::CSS::Block::::newOCBNET::Spritesets::CSS::Block::new
1310011998ms3.33sOCBNET::Spritesets::CSS::Block::::optionOCBNET::Spritesets::CSS::Block::option
1454032921ms2.65sOCBNET::Spritesets::CSS::Block::::bodyOCBNET::Spritesets::CSS::Block::body (recurses: max depth 2, inclusive time 395ms)
5536052619ms619msOCBNET::Spritesets::CSS::Block::::blocksOCBNET::Spritesets::CSS::Block::blocks
2776442610ms610msOCBNET::Spritesets::CSS::Block::::canvasOCBNET::Spritesets::CSS::Block::canvas (recurses: max depth 1, inclusive time 114ms)
3520032473ms473msOCBNET::Spritesets::CSS::Block::::headOCBNET::Spritesets::CSS::Block::head
875221454ms5.81sOCBNET::Spritesets::CSS::Block::::parseOCBNET::Spritesets::CSS::Block::parse
4117232425ms425msOCBNET::Spritesets::CSS::Block::::optionsOCBNET::Spritesets::CSS::Block::options
4024011210ms210msOCBNET::Spritesets::CSS::Block::::CORE:matchOCBNET::Spritesets::CSS::Block::CORE:match (opcode)
4024011141ms141msOCBNET::Spritesets::CSS::Block::::CORE:regcompOCBNET::Spritesets::CSS::Block::CORE:regcomp (opcode)
1007221101ms101msOCBNET::Spritesets::CSS::Block::::parentOCBNET::Spritesets::CSS::Block::parent
50361165.3ms65.3msOCBNET::Spritesets::CSS::Block::::footerOCBNET::Spritesets::CSS::Block::footer
1117.95ms23.8msOCBNET::Spritesets::CSS::Block::::BEGIN@20OCBNET::Spritesets::CSS::Block::BEGIN@20
1116.13ms16.0msOCBNET::Spritesets::CSS::Block::::BEGIN@23OCBNET::Spritesets::CSS::Block::BEGIN@23
11189µs120µsOCBNET::Spritesets::CSS::Block::::BEGIN@15OCBNET::Spritesets::CSS::Block::BEGIN@15
11186µs183µsOCBNET::Spritesets::CSS::Block::::BEGIN@14OCBNET::Spritesets::CSS::Block::BEGIN@14
0000s0sOCBNET::Spritesets::CSS::Block::::spritesetOCBNET::Spritesets::CSS::Block::spriteset
Call graph for these subroutines as a Graphviz dot language file.
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####################################################################################################
11package OCBNET::Spritesets::CSS::Block;
12####################################################################################################
13
142170µs2280µ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
use strict;
# spent 183µs making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@14 # spent 97µs making 1 call to strict::import
152167µs2152µ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
use warnings;
# 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
202599µs123.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
use OCBNET::Spritesets::CSS::Collection;
# spent 23.8ms making 1 call to OCBNET::Spritesets::CSS::Block::BEGIN@20
21
22# load functions to parse block body styles
2325.83ms216.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
use OCBNET::CSS::Parser::CSS;
# 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#**************************************************************************************************
33sub 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
37875231.4ms my ($selector) = @_;
38
39 # blocker to not parse more than once
408752211ms return if $selector->{'declarations'};
41
42 # parse declarations from the block body text (only real styles)
434752233ms95045.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#**************************************************************************************************
49sub 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
54875241.0ms my ($selector, $regexp) = @_;
55
56 # define default expression to clean all
57875214.1ms $regexp = qr// unless defined $regexp;
58
59 # remove all background declarations now
60402402.05s80480352ms @{$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
628752450ms } @{$selector->{'declarations'}};
63
64}
65# EO sub clean
66
67
68####################################################################################################
69
70# constructor
71#**************************************************************************************************
72sub 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
771004847.2ms my ($pckg, $parent) = @_;
78
79 # create new object
8010048570ms20096315ms 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
1021004830.8ms if (defined $parent)
103 {
104 # connect parent node
1051004838.8ms $block->{'parent'} = $parent;
106 # we are one of our parents children
1071004864.0ms push(@{$parent->{'blocks'}}, $block);
108 }
109
110 # bless into correct package
11110048376ms return bless $block, $pckg;
112
113}
114# EO constructor
115
116####################################################################################################
117# getter methods for object attributes
118####################################################################################################
119
120# return code fragments
121#**************************************************************************************************
12235200891ms
# 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
sub head { $_[0]->{'head'} }
123503695.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
sub footer { $_[0]->{'footer'} }
124
125# return the sub-blocks list
126#**************************************************************************************************
127553601.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
sub blocks { @{$_[0]->{'blocks'}} }
128
129# return the parent block object
130#**************************************************************************************************
13110072352ms
# spent 101ms within OCBNET::Spritesets::CSS::Block::parent which was called 10072 times, avg 10µs/call: # 5036 times (51.3ms+0s) by OCBNET::Spritesets::CSS::Block::render at line 167, avg 10µs/call # 5036 times (50.1ms+0s) by OCBNET::Spritesets::CSS::Block::render at line 158, avg 10µs/call
sub parent { $_[0]->{'parent'} }
132
133# return the collection objects
134#**************************************************************************************************
1351722284.33s
# spent 1.74s within OCBNET::Spritesets::CSS::Block::styles which was called 172228 times, avg 10µs/call: # 151244 times (1.51s+0s) by OCBNET::Spritesets::CSS::Block::style at line 266, avg 10µs/call # 20984 times (235ms+0s) by OCBNET::Spritesets::CSS::Block::style at line 278, avg 11µs/call
sub styles { $_[0]->{'styles'} }
13641172919ms
# 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
sub options { $_[0]->{'options'} }
137
138####################################################################################################
139
140# render the mangled css
141# must be the same as on read
142# if no styles have been added
143#**************************************************************************************************
144sub 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
1481007227.4ms my ($block) = @_;
149
150 # first add the header
15110072112ms10072126ms 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
15410072145ms10072121ms 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
158503657.1ms503650.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
161503667.2ms50361.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
164503668.3ms503665.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
167503663.6ms503651.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
17310072198ms return $css;
174
175}
176# EO sub render
177
178####################################################################################################
179
180# render the body css code
181# either mangled or original
182#**************************************************************************************************
183sub 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
1871454033.6ms my $css = '';
188
189 # get block to render
1901454032.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
19614540298ms 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
2075036241ms15084512ms $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
21114540279ms return $css;
212
213}
214# EO sub body
215
216####################################################################################################
217
218# return block text
219#**************************************************************************************************
220sub 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
2242010840.1ms my $css = '';
225
226 # get block to render
2272010841.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
2332010889.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
24420108502ms35164411ms $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
24820108393ms 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#**************************************************************************************************
259sub 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
263103668358ms my ($self, $style) = @_;
264
265 # do we have a valid style in current block
2661036684.11s30248824.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 {
27815608600ms419682.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
284507161.10s return undef;
285
286}
287# EO sub style
288
289####################################################################################################
290
291# get parsed css comment option by name
292#**************************************************************************************************
293sub 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
2971310040.2ms my ($self, $option) = @_;
298
299 # do we have a valid style in current block
30013100514ms422002.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
307510033.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
3185100139ms return undef;
319
320}
321# EO sub option
322
323####################################################################################################
324
325# get canvas
326#**************************************************************************************************
327sub 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
3312776476.4ms my ($self) = @_;
332
333 # do we have a canvas on block
33427764401ms 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
3411418884.0ms if (defined $self->{'ref'})
342 {
343 # get canvas from referenced block styles
344 foreach my $ref (@{$self->{'ref'}})
345 {
3465088116ms78720s 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
35211404200ms return undef;
353
354}
355# EO sub option
356
357####################################################################################################
358
359# get spriteset
360#**************************************************************************************************
361sub 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####################################################################################################
393112µs1;
 
# 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
sub OCBNET::Spritesets::CSS::Block::CORE:match; # opcode
# 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
sub OCBNET::Spritesets::CSS::Block::CORE:regcomp; # opcode