Filename | /home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/Spritesets/CSS/Collection.pm |
Statements | Executed 2855794 statements in 37.8s |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
523592 | 13 | 3 | 28.1s | 30.3s | get (recurses: max depth 2, inclusive time 15.6s) | OCBNET::Spritesets::CSS::Collection::
46188 | 20 | 3 | 3.00s | 3.30s | set (recurses: max depth 1, inclusive time 598ms) | OCBNET::Spritesets::CSS::Collection::
554796 | 12 | 1 | 2.27s | 2.27s | CORE:match (opcode) | OCBNET::Spritesets::CSS::Collection::
25392 | 2 | 2 | 391ms | 391ms | new | OCBNET::Spritesets::CSS::Collection::
46188 | 1 | 1 | 129ms | 129ms | CORE:subst (opcode) | OCBNET::Spritesets::CSS::Collection::
5308 | 2 | 1 | 68.9ms | 68.9ms | defined | OCBNET::Spritesets::CSS::Collection::
11497 | 14 | 1 | 66.6ms | 66.6ms | CORE:regcomp (opcode) | OCBNET::Spritesets::CSS::Collection::
1 | 1 | 1 | 8.95ms | 14.1ms | BEGIN@16 | OCBNET::Spritesets::CSS::Collection::
1 | 1 | 1 | 94µs | 236µs | BEGIN@10 | OCBNET::Spritesets::CSS::Collection::
1 | 1 | 1 | 73µs | 106µs | BEGIN@11 | OCBNET::Spritesets::CSS::Collection::
7 | 7 | 1 | 69µs | 69µs | CORE:qr (opcode) | OCBNET::Spritesets::CSS::Collection::
1 | 1 | 1 | 58µs | 762µs | BEGIN@15 | OCBNET::Spritesets::CSS::Collection::
0 | 0 | 0 | 0s | 0s | exists | OCBNET::Spritesets::CSS::Collection::
0 | 0 | 0 | 0s | 0s | keys | OCBNET::Spritesets::CSS::Collection::
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 | #################################################################################################### | ||||
7 | package OCBNET::Spritesets::CSS::Collection; | ||||
8 | #################################################################################################### | ||||
9 | |||||
10 | 2 | 175µs | 2 | 378µ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 # spent 236µs making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@10
# spent 142µs making 1 call to strict::import |
11 | 2 | 150µs | 2 | 139µ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 # 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 | |||||
15 | 2 | 176µs | 2 | 1.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 # spent 762µs making 1 call to OCBNET::Spritesets::CSS::Collection::BEGIN@15
# spent 703µs making 1 call to Exporter::import |
16 | 2 | 7.32ms | 2 | 14.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 # 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 | #************************************************************************************************** | ||||
22 | 1 | 204µs | 2 | 129µs | my $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 | #************************************************************************************************** | ||||
26 | 1 | 111µs | 2 | 76µs | our $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 | #************************************************************************************************** | ||||
30 | 1 | 133µs | 2 | 97µs | my $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 |
31 | 1 | 27µs | 1 | 10µs | my $re_css_bg_attachment = qr/(?:scroll|fixed|inherit)/i; # spent 10µs making 1 call to OCBNET::Spritesets::CSS::Collection::CORE:qr |
32 | 1 | 27µs | 1 | 10µs | my $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 |
33 | 1 | 125µs | 2 | 89µs | my $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 | #************************************************************************************************** | ||||
37 | 1 | 180µs | 2 | 144µs | my $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 | ||||
43 | 1 | 14µs | my %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 | ||||
55 | 1 | 23µs | my %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 | #************************************************************************************************** | ||||
70 | sub 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 | ||||
74 | 46188 | 222ms | 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 | ||||
79 | 46188 | 1.13s | 46188 | 129ms | $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 | ||||
82 | 46188 | 1.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 | ||||
127 | 4896 | 323ms | 9792 | 105ms | 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 | { | ||||
133 | 4896 | 63.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 | { | ||||
143 | 4896 | 72.5ms | 4896 | 0s | $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 |
144 | 4896 | 67.9ms | 4896 | 0s | $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 | ||||
149 | 4896 | 203ms | 9792 | 34.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 | ||||
166 | 444 | 22.7ms | 888 | 11.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 | { | ||||
172 | 444 | 6.34ms | 444 | 0s | $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 |
173 | 444 | 5.91ms | 444 | 0s | $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 | ||||
177 | 444 | 12.4ms | 888 | 2.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 | { | ||||
192 | 12 | 936µs | 24 | 601µ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 | ||||
194 | 12 | 145µs | my ($id, $url) = split(/\s+/, $value, 2); | ||
195 | # set the block options for this sprite | ||||
196 | 12 | 215µs | 12 | 0s | $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 |
197 | 12 | 178µs | 12 | 0s | $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 |
198 | 12 | 66µs | $self->set('sprite-importance', $3) if defined $3; | ||
199 | } | ||||
200 | |||||
201 | # parse margin and padding boxmodel | ||||
202 | elsif (exists $boxmodel{$name}) | ||||
203 | { | ||||
204 | |||||
205 | 200 | 11.5ms | 400 | 6.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 | { | ||||
213 | 16 | 251µs | 16 | 0s | $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 |
214 | 16 | 201µs | 16 | 0s | $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 |
215 | 16 | 199µs | 16 | 0s | $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 |
216 | 16 | 217µs | 16 | 0s | $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 | |||||
219 | 200 | 9.70ms | 400 | 5.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 | |||||
232 | 200 | 8.98ms | 400 | 4.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 | { | ||||
238 | 152 | 2.31ms | 152 | 0s | $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 |
239 | 152 | 1.99ms | 152 | 0s | $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 |
240 | 152 | 1.89ms | 152 | 0s | $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 |
241 | 152 | 2.10ms | 152 | 0s | $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 | |||||
244 | 200 | 6.54ms | 400 | 1.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 | { | ||||
249 | 32 | 485µs | 32 | 0s | $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 |
250 | 32 | 392µs | 32 | 0s | $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 |
251 | 32 | 366µs | 32 | 0s | $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 |
252 | 32 | 432µs | 32 | 0s | $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 | { | ||||
263 | 40636 | 362ms | 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 | #************************************************************************************************** | ||||
274 | sub 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 | ||||
278 | 523592 | 1.49s | my ($self, $name) = @_; | ||
279 | |||||
280 | # try to fetch important rule first | ||||
281 | # only if we are not yet asking for it | ||||
282 | 523592 | 13.6s | 523592 | 2.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 | ||||
285 | 261796 | 3.12s | 261796 | 0s | 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 | ||||
287 | 261796 | 518ms | return $value if defined $value; | ||
288 | } | ||||
289 | |||||
290 | # return combined shorthand | ||||
291 | 523592 | 1.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 | { | ||||
301 | 9856 | 663ms | 29568 | 41.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 | { | ||||
307 | 9856 | 689ms | 29568 | 34.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 | ||||
312 | 503880 | 12.0s | return $self->{$name}; | ||
313 | |||||
314 | } | ||||
315 | # EO sub get | ||||
316 | |||||
317 | #################################################################################################### | ||||
318 | |||||
319 | # simple core methods for hash | ||||
320 | 25392 | 646ms | # 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 | ||
321 | sub keys { CORE::keys %{$_[0]} } | ||||
322 | sub exists { CORE::exists $_[0]->{$_[1]}; } | ||||
323 | 5308 | 156ms | # 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 | ||
324 | |||||
325 | #################################################################################################### | ||||
326 | #################################################################################################### | ||||
327 | 1 | 53µs | 1; | ||
# 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 | |||||
# 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 | |||||
# 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 | |||||
# 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 |