← 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/Collection.pm
StatementsExecuted 2855794 statements in 37.8s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
52359213328.1s30.3sOCBNET::Spritesets::CSS::Collection::::getOCBNET::Spritesets::CSS::Collection::get (recurses: max depth 2, inclusive time 15.6s)
461882033.00s3.30sOCBNET::Spritesets::CSS::Collection::::setOCBNET::Spritesets::CSS::Collection::set (recurses: max depth 1, inclusive time 598ms)
5547961212.27s2.27sOCBNET::Spritesets::CSS::Collection::::CORE:matchOCBNET::Spritesets::CSS::Collection::CORE:match (opcode)
2539222391ms391msOCBNET::Spritesets::CSS::Collection::::newOCBNET::Spritesets::CSS::Collection::new
4618811129ms129msOCBNET::Spritesets::CSS::Collection::::CORE:substOCBNET::Spritesets::CSS::Collection::CORE:subst (opcode)
53082168.9ms68.9msOCBNET::Spritesets::CSS::Collection::::definedOCBNET::Spritesets::CSS::Collection::defined
1149714166.6ms66.6msOCBNET::Spritesets::CSS::Collection::::CORE:regcompOCBNET::Spritesets::CSS::Collection::CORE:regcomp (opcode)
1118.95ms14.1msOCBNET::Spritesets::CSS::Collection::::BEGIN@16OCBNET::Spritesets::CSS::Collection::BEGIN@16
11194µs236µsOCBNET::Spritesets::CSS::Collection::::BEGIN@10OCBNET::Spritesets::CSS::Collection::BEGIN@10
11173µs106µsOCBNET::Spritesets::CSS::Collection::::BEGIN@11OCBNET::Spritesets::CSS::Collection::BEGIN@11
77169µs69µsOCBNET::Spritesets::CSS::Collection::::CORE:qrOCBNET::Spritesets::CSS::Collection::CORE:qr (opcode)
11158µs762µsOCBNET::Spritesets::CSS::Collection::::BEGIN@15OCBNET::Spritesets::CSS::Collection::BEGIN@15
0000s0sOCBNET::Spritesets::CSS::Collection::::existsOCBNET::Spritesets::CSS::Collection::exists
0000s0sOCBNET::Spritesets::CSS::Collection::::keysOCBNET::Spritesets::CSS::Collection::keys
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# TODO: Move bits to separated packages
6####################################################################################################
7package OCBNET::Spritesets::CSS::Collection;
8####################################################################################################
9
102175µs2378µs
# spent 236µs (94+142) within OCBNET::Spritesets::CSS::Collection::BEGIN@10 which was called: # once (94µs+142µs) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 10
use strict;
# spent 236µs making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@10 # spent 142µs making 1 call to strict::import
112150µs2139µs
# spent 106µs (73+33) within OCBNET::Spritesets::CSS::Collection::BEGIN@11 which was called: # once (73µs+33µs) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 11
use warnings;
# spent 106µs making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@11 # spent 33µs making 1 call to warnings::import
12
13####################################################################################################
14
152176µs21.47ms
# spent 762µs (58+703) within OCBNET::Spritesets::CSS::Collection::BEGIN@15 which was called: # once (58µs+703µs) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 15
use OCBNET::CSS::Parser::Base;
# spent 762µs making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@15 # spent 703µs making 1 call to Exporter::import
1627.32ms214.6ms
# spent 14.1ms (8.95+5.20) within OCBNET::Spritesets::CSS::Collection::BEGIN@16 which was called: # once (8.95ms+5.20ms) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 16
use OCBNET::CSS::Parser::Colors;
# spent 14.1ms making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@16 # spent 476µs making 1 call to Exporter::import
17
18####################################################################################################
19
20# regular expression to match any url
21#**************************************************************************************************
221204µs2129µsmy $re_css_url = qr/url\((?:\'$re_apo\'|\"$re_quot\"|[^\)]*)\)/;
# spent 114µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:regcomp # spent 15µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
23
24# regular expression to match any length property
25#**************************************************************************************************
261111µs276µsour $re_css_length = qr/\b$re_number(?:em|ex|px|\%|in|cm|mm|pt|pc)?(?=\s|\b|\Z|;|,)/i;
# spent 67µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:regcomp # spent 9µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
27
28# regular expression for background options
29#**************************************************************************************************
301133µs297µsmy $re_css_bg_image = qr/(?:none|$re_css_url|inherit)/i;
# spent 89µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:regcomp # spent 8µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
31127µs110µsmy $re_css_bg_attachment = qr/(?:scroll|fixed|inherit)/i;
# spent 10µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
32127µs110µsmy $re_css_bg_repeat = qr/(?:no-repeat|repeat|repeat-x|repeat-y|inherit)/i;
# spent 10µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
331125µs289µsmy $re_css_bg_position = qr/(?:left|right|top|bottom|center|$re_css_length|inherit)/i;
# spent 80µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:regcomp # spent 9µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
34
35# regular expression for combined background options
36#**************************************************************************************************
371180µs2144µsmy $re_css_bg_position_block = qr/($re_css_bg_position(?:\s+($re_css_bg_position))?)/;
# spent 135µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:regcomp # spent 9µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr
38
39####################################################################################################
40
41# attributes for box model that
42# have left/top and right/bottom
43114µsmy %boxmodel =
44(
45 'margin' => 1,
46 'padding' => 1,
47 # not yet implemented
48 # but parse them anyway
49 'sprite-margin' => 1,
50 'sprite-padding' => 1
51);
52
53# attributes with keywords
54# and more complex logic
55123µsmy %shorthand =
56(
57 'background' => [
58 [ 'color' => $re_css_color ],
59 [ 'image' => $re_css_bg_image ],
60 [ 'repeat' => $re_css_bg_repeat ],
61 [ 'attachment' => $re_css_bg_attachment ],
62 [ 'position' => $re_css_bg_position_block ]
63 ]
64);
65
66####################################################################################################
67
68# set a value by name
69#**************************************************************************************************
70sub set
71
# spent 3.30s (3.00+301ms) within OCBNET::Spritesets::CSS::Collection::set which was called 46188 times, avg 71µs/call: # 34672 times (2.39s+879ms) by OCBNET::CSS::Parser::CSS::__ANON__[/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm:82] at line 77 of webmerge/scripts/modules/OCBNET/CSS/Parser/CSS.pm, avg 94µs/call # 4896 times (298ms+-298ms) by OCBNET::Spritesets::CSS::Collection::set at line 143, avg 0s/call # 4896 times (212ms+-212ms) by OCBNET::Spritesets::CSS::Collection::set at line 144, avg 0s/call # 444 times (18.7ms+-18.7ms) by OCBNET::Spritesets::CSS::Collection::set at line 172, avg 0s/call # 444 times (16.9ms+-16.9ms) by OCBNET::Spritesets::CSS::Collection::set at line 173, avg 0s/call # 152 times (5.65ms+-5.65ms) by OCBNET::Spritesets::CSS::Collection::set at line 241, avg 0s/call # 152 times (5.82ms+-5.82ms) by OCBNET::Spritesets::CSS::Collection::set at line 239, avg 0s/call # 152 times (6.87ms+-6.87ms) by OCBNET::Spritesets::CSS::Collection::set at line 238, avg 0s/call # 152 times (5.64ms+-5.64ms) by OCBNET::Spritesets::CSS::Collection::set at line 240, avg 0s/call # 32 times (1.17ms+-1.17ms) by OCBNET::Spritesets::CSS::Collection::set at line 251, avg 0s/call # 32 times (1.16ms+-1.16ms) by OCBNET::Spritesets::CSS::Collection::set at line 252, avg 0s/call # 32 times (1.17ms+-1.17ms) by OCBNET::Spritesets::CSS::Collection::set at line 250, avg 0s/call # 32 times (1.46ms+-1.46ms) by OCBNET::Spritesets::CSS::Collection::set at line 249, avg 0s/call # 16 times (592µs+-592µs) by OCBNET::Spritesets::CSS::Collection::set at line 214, avg 0s/call # 16 times (682µs+-682µs) by OCBNET::Spritesets::CSS::Collection::set at line 213, avg 0s/call # 16 times (594µs+-594µs) by OCBNET::Spritesets::CSS::Collection::set at line 215, avg 0s/call # 16 times (588µs+-588µs) by OCBNET::Spritesets::CSS::Collection::set at line 216, avg 0s/call # 12 times (25.1ms+134µs) by OCBNET::Spritesets::CSS::Parser::write at line 404 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 2.10ms/call # 12 times (470µs+-470µs) by OCBNET::Spritesets::CSS::Collection::set at line 197, avg 0s/call # 12 times (595µs+-595µs) by OCBNET::Spritesets::CSS::Collection::set at line 196, avg 0s/call
{
72
73 # get passed arguments
7446188222ms my ($self, $name, $value, $imp) = @_;
75
76 # hotfix to at least be able to read
77 # important rules too, altough we will
78 # not consider their importance really
79461881.13s46188129ms $imp = ($value =~ s/\s*!important\s*$//i) || $imp;
# spent 129ms making 46188 calls to OCBNET::Spritesets::CSS::Collection::CORE:subst, avg 3µs/call
80
81 # test if this a shorthand
82461881.31s if (exists $shorthand{$name})
83 {
84
85 # get array with all shorthands
86 my $shorthands = $shorthand{$name};
87
88 # parse value completly
89 while ($value ne '')
90 {
91 # status variable
92 my $rv = 0;
93 # parse in order (priority)
94 foreach my $shorthand (@{$shorthands})
95 {
96 # get the attribute name
97 my $attr = $shorthand->[0];
98 # regular expression for attribute
99 my $re_css_attribute = $shorthand->[1];
100 # test if the current value matches
101 if ($value =~ s/^\s*($re_css_attribute)\s*//)
102 {
103 # set the property (may be shorthand too)
104 $self->set(join('-', $name, $attr), $1, $imp);
105 # remember state and exit loop
106 $rv = 1; last
107 }
108 # EO if match
109 }
110 # EO each shorthand
111
112 # warn and exit loop if nothing was parsed (syntax error)
113 warn "invalid options for $name: ", $value && last if $rv == 0;
114
115 }
116 # EO parse value
117
118 }
119 # EO if shorthand
120
121 # special case top/left and right/bottom
122 elsif ($name eq 'background-position')
123 {
124
125 # parse both values and correct wrong
126 # order of left/top and right/bottom
1274896323ms9792105ms if ($value =~ m/\A\s*
# spent 72.5ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 15µs/call # spent 32.3ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 7µs/call
128 ($re_css_bg_position)\s*
129 ($re_css_bg_position)\s*
130 \z/gmx
131 )
132 {
133489663.7ms if (
134 (($1 eq 'top' || $1 eq 'bottom') && not ($2 eq 'top' || $2 eq 'bottom'))
135 || (($2 eq 'left' || $2 eq 'right') && not ($1 eq 'left' || $1 eq 'right'))
136 )
137 {
138 $self->set(join('-', $name, 'x'), $2, $imp);
139 $self->set(join('-', $name, 'y'), $1, $imp);
140 }
141 else
142 {
143489672.5ms48960s $self->set(join('-', $name, 'x'), $1, $imp);
# spent 307ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::set, avg 63µs/call, recursion: max depth 1, sum of overlapping time 307ms
144489667.9ms48960s $self->set(join('-', $name, 'y'), $2, $imp);
# spent 220ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::set, avg 45µs/call, recursion: max depth 1, sum of overlapping time 220ms
145 }
146 }
147
148 # one value means the other is centered
1494896203ms979234.2ms if ($value =~ m/\A\s*
# spent 24.0ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 5µs/call # spent 10.2ms making 4896 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 2µs/call
150 ($re_css_bg_position)\s*
151 \z/gmx
152 )
153 {
154 $self->set(join('-', $name, 'x'), $1, $imp);
155 $self->set(join('-', $name, 'y'), '50%', $imp);
156 }
157
158 }
159 # EO if 'background-position'
160
161 # do not inherit for all axes
162 elsif ($name eq 'background-size')
163 {
164
165 # values are always in order
16644422.7ms88811.4ms if ($value =~ m/\A\s*
# spent 8.75ms making 444 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 20µs/call # spent 2.66ms making 444 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 6µs/call
167 ($re_css_length|inherit)\s*
168 ($re_css_length|inherit)\s*
169 \z/gmx
170 )
171 {
1724446.34ms4440s $self->set(join('-', $name, 'x'), $1, $imp);
# spent 19.4ms making 444 calls to OCBNET::Spritesets::CSS::Collection::set, avg 44µs/call, recursion: max depth 1, sum of overlapping time 19.4ms
1734445.91ms4440s $self->set(join('-', $name, 'y'), $2, $imp);
# spent 17.6ms making 444 calls to OCBNET::Spritesets::CSS::Collection::set, avg 40µs/call, recursion: max depth 1, sum of overlapping time 17.6ms
174 }
175
176 # only adjust one axis
17744412.4ms8882.94ms if ($value =~ m/\A\s*
# spent 2.10ms making 444 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 5µs/call # spent 840µs making 444 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 2µs/call
178 ($re_css_length|inherit)\s*
179 \z/gmx
180 )
181 {
182 $self->set(join('-', $name, 'x'), $1, $imp);
183 $self->set(join('-', $name, 'y'), '100%', $imp);
184 }
185
186 }
187 # EO if 'background-size'
188
189 # do not inherit for all axes
190 elsif ($name eq 'sprite')
191 {
19212936µs24601µs $value =~ m/^\s*($re_css_name)\s+($re_css_url)\s*(\!important)?$/i;
# spent 364µs making 12 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 30µs/call # spent 237µs making 12 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 20µs/call
193 # split the shorthand value into id and url
19412145µs my ($id, $url) = split(/\s+/, $value, 2);
195 # set the block options for this sprite
19612215µs120s $self->set('css-id', $1) if defined $1;
# spent 615µs making 12 calls to OCBNET::Spritesets::CSS::Collection::set, avg 51µs/call, recursion: max depth 1, sum of overlapping time 615µs
19712178µs120s $self->set('sprite-image', $2) if defined $2;
# spent 578µs making 12 calls to OCBNET::Spritesets::CSS::Collection::set, avg 48µs/call, recursion: max depth 1, sum of overlapping time 578µs
1981266µs $self->set('sprite-importance', $3) if defined $3;
199 }
200
201 # parse margin and padding boxmodel
202 elsif (exists $boxmodel{$name})
203 {
204
20520011.5ms4006.35ms if ($value =~ m/\A\s*
# spent 4.68ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 23µs/call # spent 1.67ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 8µs/call
206 ($re_css_length)\s*
207 ($re_css_length)\s*
208 ($re_css_length)\s*
209 ($re_css_length)\s*
210 \z/gmx
211 )
212 {
21316251µs160s $self->set(join('-', $name, 'top'), $1, $imp);
# spent 707µs making 16 calls to OCBNET::Spritesets::CSS::Collection::set, avg 44µs/call, recursion: max depth 1, sum of overlapping time 707µs
21416201µs160s $self->set(join('-', $name, 'left'), $4, $imp);
# spent 618µs making 16 calls to OCBNET::Spritesets::CSS::Collection::set, avg 39µs/call, recursion: max depth 1, sum of overlapping time 618µs
21516199µs160s $self->set(join('-', $name, 'right'), $2, $imp);
# spent 618µs making 16 calls to OCBNET::Spritesets::CSS::Collection::set, avg 39µs/call, recursion: max depth 1, sum of overlapping time 618µs
21616217µs160s $self->set(join('-', $name, 'bottom'), $3, $imp);
# spent 612µs making 16 calls to OCBNET::Spritesets::CSS::Collection::set, avg 38µs/call, recursion: max depth 1, sum of overlapping time 612µs
217 }
218
2192009.70ms4005.09ms if ($value =~ m/\A\s*
# spent 3.88ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 19µs/call # spent 1.21ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 6µs/call
220 ($re_css_length)\s*
221 ($re_css_length)\s*
222 ($re_css_length)\s*
223 \z/gmx
224 )
225 {
226 $self->set(join('-', $name, 'top'), $1, $imp);
227 $self->set(join('-', $name, 'left'), $2, $imp);
228 $self->set(join('-', $name, 'right'), $2, $imp);
229 $self->set(join('-', $name, 'bottom'), $3, $imp);
230 }
231
2322008.98ms4004.32ms if ($value =~ m/\A\s*
# spent 3.28ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 16µs/call # spent 1.04ms making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 5µs/call
233 ($re_css_length)\s*
234 ($re_css_length)\s*
235 \z/gmx
236 )
237 {
2381522.31ms1520s $self->set(join('-', $name, 'top'), $1, $imp);
# spent 7.14ms making 152 calls to OCBNET::Spritesets::CSS::Collection::set, avg 47µs/call, recursion: max depth 1, sum of overlapping time 7.14ms
2391521.99ms1520s $self->set(join('-', $name, 'left'), $2, $imp);
# spent 6.07ms making 152 calls to OCBNET::Spritesets::CSS::Collection::set, avg 40µs/call, recursion: max depth 1, sum of overlapping time 6.07ms
2401521.89ms1520s $self->set(join('-', $name, 'right'), $2, $imp);
# spent 5.86ms making 152 calls to OCBNET::Spritesets::CSS::Collection::set, avg 39µs/call, recursion: max depth 1, sum of overlapping time 5.86ms
2411522.10ms1520s $self->set(join('-', $name, 'bottom'), $1, $imp);
# spent 5.89ms making 152 calls to OCBNET::Spritesets::CSS::Collection::set, avg 39µs/call, recursion: max depth 1, sum of overlapping time 5.89ms
242 }
243
2442006.54ms4001.90ms if ($value =~ m/\A\s*
# spent 957µs making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:regcomp, avg 5µs/call # spent 941µs making 200 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 5µs/call
245 ($re_css_length)\s*
246 \z/gmx
247 )
248 {
24932485µs320s $self->set(join('-', $name, 'top'), $1, $imp);
# spent 1.51ms making 32 calls to OCBNET::Spritesets::CSS::Collection::set, avg 47µs/call, recursion: max depth 1, sum of overlapping time 1.51ms
25032392µs320s $self->set(join('-', $name, 'left'), $1, $imp);
# spent 1.22ms making 32 calls to OCBNET::Spritesets::CSS::Collection::set, avg 38µs/call, recursion: max depth 1, sum of overlapping time 1.22ms
25132366µs320s $self->set(join('-', $name, 'right'), $1, $imp);
# spent 1.22ms making 32 calls to OCBNET::Spritesets::CSS::Collection::set, avg 38µs/call, recursion: max depth 1, sum of overlapping time 1.22ms
25232432µs320s $self->set(join('-', $name, 'bottom'), $1, $imp);
# spent 1.21ms making 32 calls to OCBNET::Spritesets::CSS::Collection::set, avg 38µs/call, recursion: max depth 1, sum of overlapping time 1.21ms
253 }
254
255 }
256 # EO boxmodel
257
258 # just assign the value
259 # ignore if we don't understand
260 # implement atrributes when needed
261 else
262 {
26340636362ms unless ($imp) { $self->{$name} = $value; }
264 else { $self->{ '!' . $name } = $value; }
265 }
266
267}
268# EO sub set
269
270####################################################################################################
271
272# get a value by name
273#**************************************************************************************************
274sub get
275
# spent 30.3s (28.1+2.16) within OCBNET::Spritesets::CSS::Collection::get which was called 523592 times, avg 58µs/call: # 261796 times (9.70s+-9.70s) by OCBNET::Spritesets::CSS::Collection::get at line 285, avg 0s/call # 151244 times (11.4s+11.2s) by OCBNET::Spritesets::CSS::Block::style at line 266 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm, avg 149µs/call # 21100 times (1.19s+948ms) by OCBNET::Spritesets::CSS::Block::option at line 300 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm, avg 101µs/call # 20984 times (1.39s+1.04s) by OCBNET::Spritesets::CSS::Block::style at line 278 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm, avg 116µs/call # 19712 times (1.24s+-1.24s) by OCBNET::Spritesets::CSS::Collection::get at line 307, avg 0s/call # 19712 times (1.31s+-1.31s) by OCBNET::Spritesets::CSS::Collection::get at line 301, avg 0s/call # 10036 times (596ms+328ms) by OCBNET::Spritesets::CSS::Parser::rehash at line 216 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 92µs/call # 10036 times (515ms+359ms) by OCBNET::Spritesets::CSS::Parser::rehash at line 207 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 87µs/call # 4928 times (394ms+251ms) by OCBNET::Spritesets::CSS::Parser::process at line 489 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 131µs/call # 4008 times (407ms+259ms) by OCBNET::Spritesets::CSS::Parser::process at line 463 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 166µs/call # 12 times (1.04ms+752µs) by OCBNET::Spritesets::CSS::Parser::write at line 417 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 149µs/call # 12 times (859µs+599µs) by OCBNET::Spritesets::CSS::Parser::write at line 404 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 121µs/call # 12 times (608µs+413µs) by OCBNET::Spritesets::CSS::Parser::write at line 407 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 85µs/call
{
276
277 # get passed arguments
2785235921.49s my ($self, $name) = @_;
279
280 # try to fetch important rule first
281 # only if we are not yet asking for it
28252359213.6s5235922.08s unless ($name =~ m/^\!/)
# spent 2.08s making 523592 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 4µs/call
283 {
284 # prepend a exlamation mark to the name
2852617963.12s2617960s my $value = $self->get('!' . $name);
# spent 11.2s making 261796 calls to OCBNET::Spritesets::CSS::Collection::get, avg 43µs/call, recursion: max depth 2, sum of overlapping time 11.2s
286 # return the important value if given
287261796518ms return $value if defined $value;
288 }
289
290 # return combined shorthand
2915235921.00s if ($name eq 'background-position')
292 {
293 return join(' ',
294 $self->get('background-position-x'),
295 $self->get('background-position-y')
296 );
297 }
298 # return boolean if we are repeating
299 elsif ($name eq 'background-repeat-x')
300 {
3019856663ms2956841.9ms return (not defined $self->get('background-repeat')) ||
# spent 41.9ms making 9856 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 4µs/call # spent 2.23s making 19712 calls to OCBNET::Spritesets::CSS::Collection::get, avg 113µs/call, recursion: max depth 1, sum of overlapping time 2.23s
302 $self->get('background-repeat') =~ m/repeat-x/i ? 1 : 0;
303 }
304 # return boolean if we are repeating
305 elsif ($name eq 'background-repeat-y')
306 {
3079856689ms2956834.7ms return (not defined $self->get('background-repeat')) ||
# spent 34.7ms making 9856 calls to OCBNET::Spritesets::CSS::Collection::CORE:match, avg 4µs/call # spent 2.13s making 19712 calls to OCBNET::Spritesets::CSS::Collection::get, avg 108µs/call, recursion: max depth 1, sum of overlapping time 2.13s
308 $self->get('background-repeat') =~ m/repeat-y/i ? 1 : 0;
309 }
310
311 # return stored value
31250388012.0s return $self->{$name};
313
314}
315# EO sub get
316
317####################################################################################################
318
319# simple core methods for hash
32025392646ms
# spent 391ms within OCBNET::Spritesets::CSS::Collection::new which was called 25392 times, avg 15µs/call: # 20096 times (315ms+0s) by OCBNET::Spritesets::CSS::Block::new at line 80 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Block.pm, avg 16µs/call # 5296 times (75.8ms+0s) by OCBNET::Spritesets::CSS::Parser::read at line 135 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 14µs/call
sub new { bless {}, $_[0]; }
321sub keys { CORE::keys %{$_[0]} }
322sub exists { CORE::exists $_[0]->{$_[1]}; }
3235308156ms
# spent 68.9ms within OCBNET::Spritesets::CSS::Collection::defined which was called 5308 times, avg 13µs/call: # 5296 times (68.7ms+0s) by OCBNET::Spritesets::CSS::Parser::read at line 141 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 13µs/call # 12 times (156µs+0s) by OCBNET::Spritesets::CSS::Parser::read at line 144 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 13µs/call
sub defined { CORE::defined $_[0]->{$_[1]}; }
324
325####################################################################################################
326####################################################################################################
327153µs1;
 
# spent 2.27s within OCBNET::Spritesets::CSS::Collection::CORE:match which was called 554796 times, avg 4µs/call: # 523592 times (2.08s+0s) by OCBNET::Spritesets::CSS::Collection::get at line 282, avg 4µs/call # 9856 times (41.9ms+0s) by OCBNET::Spritesets::CSS::Collection::get at line 301, avg 4µs/call # 9856 times (34.7ms+0s) by OCBNET::Spritesets::CSS::Collection::get at line 307, avg 4µs/call # 4896 times (72.5ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 127, avg 15µs/call # 4896 times (10.2ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 149, avg 2µs/call # 444 times (8.75ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 166, avg 20µs/call # 444 times (840µs+0s) by OCBNET::Spritesets::CSS::Collection::set at line 177, avg 2µs/call # 200 times (4.68ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 205, avg 23µs/call # 200 times (3.88ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 219, avg 19µs/call # 200 times (3.28ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 232, avg 16µs/call # 200 times (941µs+0s) by OCBNET::Spritesets::CSS::Collection::set at line 244, avg 5µs/call # 12 times (364µs+0s) by OCBNET::Spritesets::CSS::Collection::set at line 192, avg 30µs/call
sub OCBNET::Spritesets::CSS::Collection::CORE:match; # opcode
# spent 69µs within OCBNET::Spritesets::CSS::Collection::CORE:qr which was called 7 times, avg 10µs/call: # once (15µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 22 # once (10µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 32 # once (10µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 31 # once (9µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 37 # once (9µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 33 # once (9µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 26 # once (8µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 30
sub OCBNET::Spritesets::CSS::Collection::CORE:qr; # opcode
# spent 66.6ms within OCBNET::Spritesets::CSS::Collection::CORE:regcomp which was called 11497 times, avg 6µs/call: # 4896 times (32.3ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 127, avg 7µs/call # 4896 times (24.0ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 149, avg 5µs/call # 444 times (2.66ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 166, avg 6µs/call # 444 times (2.10ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 177, avg 5µs/call # 200 times (1.67ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 205, avg 8µs/call # 200 times (1.21ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 219, avg 6µs/call # 200 times (1.04ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 232, avg 5µs/call # 200 times (957µs+0s) by OCBNET::Spritesets::CSS::Collection::set at line 244, avg 5µs/call # 12 times (237µs+0s) by OCBNET::Spritesets::CSS::Collection::set at line 192, avg 20µs/call # once (135µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 37 # once (114µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 22 # once (89µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 30 # once (80µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 33 # once (67µs+0s) by OCBNET::Spritesets::CSS::Block::BEGIN@20 at line 26
sub OCBNET::Spritesets::CSS::Collection::CORE:regcomp; # opcode
# spent 129ms within OCBNET::Spritesets::CSS::Collection::CORE:subst which was called 46188 times, avg 3µs/call: # 46188 times (129ms+0s) by OCBNET::Spritesets::CSS::Collection::set at line 79, avg 3µs/call
sub OCBNET::Spritesets::CSS::Collection::CORE:subst; # opcode