| 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 | OCBNET::Spritesets::CSS::Block::style |
| 8752 | 2 | 1 | 2.15s | 2.50s | OCBNET::Spritesets::CSS::Block::clean |
| 172228 | 2 | 1 | 1.74s | 1.74s | OCBNET::Spritesets::CSS::Block::styles |
| 20108 | 2 | 1 | 1.42s | 1.83s | OCBNET::Spritesets::CSS::Block::text |
| 10072 | 2 | 2 | 1.25s | 1.99s | OCBNET::Spritesets::CSS::Block::render (recurses: max depth 3, inclusive time 1.61s) |
| 10048 | 2 | 1 | 1.16s | 1.47s | OCBNET::Spritesets::CSS::Block::new |
| 13100 | 1 | 1 | 998ms | 3.33s | OCBNET::Spritesets::CSS::Block::option |
| 14540 | 3 | 2 | 921ms | 2.65s | OCBNET::Spritesets::CSS::Block::body (recurses: max depth 2, inclusive time 395ms) |
| 55360 | 5 | 2 | 619ms | 619ms | OCBNET::Spritesets::CSS::Block::blocks |
| 27764 | 4 | 2 | 610ms | 610ms | OCBNET::Spritesets::CSS::Block::canvas (recurses: max depth 1, inclusive time 114ms) |
| 35200 | 3 | 2 | 473ms | 473ms | OCBNET::Spritesets::CSS::Block::head |
| 8752 | 2 | 1 | 454ms | 5.81s | OCBNET::Spritesets::CSS::Block::parse |
| 41172 | 3 | 2 | 425ms | 425ms | OCBNET::Spritesets::CSS::Block::options |
| 40240 | 1 | 1 | 210ms | 210ms | OCBNET::Spritesets::CSS::Block::CORE:match (opcode) |
| 40240 | 1 | 1 | 141ms | 141ms | OCBNET::Spritesets::CSS::Block::CORE:regcomp (opcode) |
| 10072 | 2 | 1 | 101ms | 101ms | OCBNET::Spritesets::CSS::Block::parent |
| 5036 | 1 | 1 | 65.3ms | 65.3ms | OCBNET::Spritesets::CSS::Block::footer |
| 1 | 1 | 1 | 7.95ms | 23.8ms | OCBNET::Spritesets::CSS::Block::BEGIN@20 |
| 1 | 1 | 1 | 6.13ms | 16.0ms | OCBNET::Spritesets::CSS::Block::BEGIN@23 |
| 1 | 1 | 1 | 89µs | 120µs | OCBNET::Spritesets::CSS::Block::BEGIN@15 |
| 1 | 1 | 1 | 86µs | 183µs | OCBNET::Spritesets::CSS::Block::BEGIN@14 |
| 0 | 0 | 0 | 0s | 0s | OCBNET::Spritesets::CSS::Block::spriteset |
| 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 |