← 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:18 2013

Filename/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/Base.pm
StatementsExecuted 182714 statements in 6.58s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
68992822.41s2.92sOCBNET::CSS::Parser::Base::::fromPxOCBNET::CSS::Parser::Base::fromPx
7384881798ms798msOCBNET::CSS::Parser::Base::::CORE:matchOCBNET::CSS::Parser::Base::CORE:match (opcode)
988032652ms1.04sOCBNET::CSS::Parser::Base::::fromUrlOCBNET::CSS::Parser::Base::fromUrl (recurses: max depth 1, inclusive time 577ms)
1007211498ms732msOCBNET::CSS::Parser::Base::::uncommentOCBNET::CSS::Parser::Base::uncomment
985611485ms582msOCBNET::CSS::Parser::Base::::fromPositionOCBNET::CSS::Parser::Base::fromPosition
5300941263ms263msOCBNET::CSS::Parser::Base::::CORE:regcompOCBNET::CSS::Parser::Base::CORE:regcomp (opcode)
1007211171ms171msOCBNET::CSS::Parser::Base::::CORE:substOCBNET::CSS::Parser::Base::CORE:subst (opcode)
111202µs232µsOCBNET::CSS::Parser::Base::::BEGIN@9OCBNET::CSS::Parser::Base::BEGIN@9
77192µs92µsOCBNET::CSS::Parser::Base::::CORE:qrOCBNET::CSS::Parser::Base::CORE:qr (opcode)
11182µs180µsOCBNET::CSS::Parser::Base::::BEGIN@8OCBNET::CSS::Parser::Base::BEGIN@8
11152µs52µsOCBNET::CSS::Parser::Base::::BEGIN@17.3OCBNET::CSS::Parser::Base::BEGIN@17.3
11132µs32µsOCBNET::CSS::Parser::Base::::BEGIN@14OCBNET::CSS::Parser::Base::BEGIN@14
11129µs29µsOCBNET::CSS::Parser::Base::::BEGIN@20OCBNET::CSS::Parser::Base::BEGIN@20
11127µs27µsOCBNET::CSS::Parser::Base::::BEGIN@23OCBNET::CSS::Parser::Base::BEGIN@23
11124µs24µsOCBNET::CSS::Parser::Base::::BEGIN@17OCBNET::CSS::Parser::Base::BEGIN@17
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####################################################################################################
5package OCBNET::CSS::Parser::Base;
6####################################################################################################
7
82150µs2279µs
# spent 180µs (82+99) within OCBNET::CSS::Parser::Base::BEGIN@8 which was called: # once (82µs+99µs) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 8
use strict;
# spent 180µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@8 # spent 99µs making 1 call to strict::import
92338µs2262µs
# spent 232µs (202+30) within OCBNET::CSS::Parser::Base::BEGIN@9 which was called: # once (202µs+30µs) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 9
use warnings;
# spent 232µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@9 # spent 30µs making 1 call to warnings::import
10
11####################################################################################################
12
13# define our version string
141183µs132µs
# spent 32µs within OCBNET::CSS::Parser::Base::BEGIN@14 which was called: # once (32µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 14
BEGIN { $OCBNET::CSS::Parser::Base::VERSION = "0.70"; }
# spent 32µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@14
15
16# load exporter and inherit from it
173400µs276µs
# spent 24µs within OCBNET::CSS::Parser::Base::BEGIN@17 which was called: # once (24µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 17 # spent 52µs within OCBNET::CSS::Parser::Base::BEGIN@17.3 which was called: # once (52µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 17
BEGIN { use Exporter qw(); our @ISA = qw(Exporter); }
# spent 52µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@17.3 # spent 24µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@17
18
19# define our functions that will be exported
201176µs129µs
# spent 29µs within OCBNET::CSS::Parser::Base::BEGIN@20 which was called: # once (29µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 20
BEGIN { our @EXPORT = qw($re_apo $re_quot $re_css_name $re_number $re_percent $re_byte); }
# spent 29µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@20
21
22# define our functions than can be exported
2312.36ms127µs
# spent 27µs within OCBNET::CSS::Parser::Base::BEGIN@23 which was called: # once (27µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 23
BEGIN { our @EXPORT_OK = qw($re_comment uncomment fromPx fromUrl fromPosition); }
# spent 27µs making 1 call to OCBNET::CSS::Parser::Base::BEGIN@23
24
25####################################################################################################
26# base regular expressions
27####################################################################################################
28
29# match text in apos or quotes
30#**************************************************************************************************
31177µs137µsour $re_apo = qr/(?:[^\'\\]+|\\.)*/s;
# spent 37µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
32126µs19µsour $re_quot = qr/(?:[^\"\\]+|\\.)*/s;
# spent 9µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
33
34# match a multiline comment
35#**************************************************************************************************
36124µs18µsour $re_comment = qr/\/\*\s*(.*?)\s*\*\//s;
# spent 8µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
37
38# match a css identifier name
39#**************************************************************************************************
40125µs18µsour $re_css_name = qr/[_a-zA-Z][_a-zA-Z0-9\-]*/;
# spent 8µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
41
42# match (floating point) numbers
43#**************************************************************************************************
44130µs114µsour $re_number = qr/[\-\+]?[0-9]*\.?[0-9]+/s;
# spent 14µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
45# our $re_number_neg = qr/\-[0-9]*\.?[0-9]+/s;
46# our $re_number_pos = qr/\+?[0-9]*\.?[0-9]+/s;
47
48# match a percent value
49#**************************************************************************************************
501104µs258µsour $re_percent = qr/$re_number\%/s;
# spent 50µs making 1 call to OCBNET::CSS::Parser::Base::CORE:regcomp # spent 8µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
51
52# match a number from 0 to 255 (strict match)
53#**************************************************************************************************
54130µs18µsour $re_byte = qr/(?:0|[1-9]\d?|1\d{2}|2(?:[0-4]\d|5[0-5]))/s;
# spent 8µs making 1 call to OCBNET::CSS::Parser::Base::CORE:qr
55
56####################################################################################################
57# some helper functions
58####################################################################################################
59
60# parse dimension from pixel
61#**************************************************************************************************
62sub uncomment
63
# spent 732ms (498+234) within OCBNET::CSS::Parser::Base::uncomment which was called 10072 times, avg 73µs/call: # 10072 times (498ms+234ms) by OCBNET::Spritesets::CSS::Parser::read at line 117 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 73µs/call
{
64 # remove comment from actual value
6510072606ms20144234ms $_[0] =~ s/$re_comment//gm;
# spent 171ms making 10072 calls to OCBNET::CSS::Parser::Base::CORE:subst, avg 17µs/call # spent 63.3ms making 10072 calls to OCBNET::CSS::Parser::Base::CORE:regcomp, avg 6µs/call
66 # return the given value
6710072292ms return $_[0];
68}
69# EO sub uncomment
70
71# parse dimension from pixel
72#**************************************************************************************************
73sub fromPx
74
# spent 2.92s (2.41+510ms) within OCBNET::CSS::Parser::Base::fromPx which was called 68992 times, avg 42µs/call: # 19712 times (799ms+182ms) by OCBNET::Spritesets::CSS::Parser::load at line 259 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 50µs/call # 9856 times (569ms+169ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 55 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 75µs/call # 9856 times (125ms+14.7ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 56 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 14µs/call # 9856 times (96.4ms+0s) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 57 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 10µs/call # 4928 times (230ms+39.1ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 69 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 55µs/call # 4928 times (217ms+35.2ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 72 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 51µs/call # 4928 times (187ms+34.8ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 70 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 45µs/call # 4928 times (186ms+34.7ms) by OCBNET::Spritesets::Canvas::Optimize::optimize at line 71 of webmerge/scripts/modules/OCBNET/Spritesets/Canvas/Optimize.pm, avg 45µs/call
{
75 # return undef if nothing passed
7668992721ms return unless defined $_[0];
77 # parse number via regular expression
78410803.14s82160510ms $_[0] =~ m/($re_number)px/i ? $1 : $_[0];
# spent 319ms making 41080 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 8µs/call # spent 190ms making 41080 calls to OCBNET::CSS::Parser::Base::CORE:regcomp, avg 5µs/call
79}
80
81# parse an url
82#**************************************************************************************************
83sub fromUrl
84
# spent 1.04s (652ms+392ms) within OCBNET::CSS::Parser::Base::fromUrl which was called 9880 times, avg 106µs/call: # 4940 times (429ms+-429ms) by OCBNET::CSS::Parser::Base::fromUrl at line 86, avg 0s/call # 4928 times (222ms+819ms) by OCBNET::Spritesets::CSS::Parser::load at line 259 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 211µs/call # 12 times (488µs+1.55ms) by OCBNET::Spritesets::CSS::Parser::write at line 404 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 170µs/call
{
85 # check for css url pattern (call again to unwrap quotes)
869880638ms14820297ms return fromUrl($1) if $_[0] =~ m/^\s*url\(\s*(.*?)\s*\)\s*$/m;
# spent 297ms making 9880 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 30µs/call # spent 577ms making 4940 calls to OCBNET::CSS::Parser::Base::fromUrl, avg 117µs/call, recursion: max depth 1, sum of overlapping time 577ms
87 # unwrap quotes if there are any
884940191ms494028.5ms return $1 if $_[0] =~ m/^\"(.*?)\"\z/m;
# spent 28.5ms making 4940 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 6µs/call
894940274ms494065.9ms return $1 if $_[0] =~ m/^\'(.*?)\'\z/m;
# spent 65.9ms making 4940 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 13µs/call
90 # return same as given
91 return $_[0];
92}
93
94# parse background position
95#**************************************************************************************************
96sub fromPosition
97
# spent 582ms (485+96.9) within OCBNET::CSS::Parser::Base::fromPosition which was called 9856 times, avg 59µs/call: # 9856 times (485ms+96.9ms) by OCBNET::Spritesets::CSS::Parser::load at line 259 of webmerge/scripts/modules/OCBNET/Spritesets/CSS/Parser.pm, avg 59µs/call
{
98
99 # get position string
100985637.2ms my ($position) = @_;
101
102 # default to left/top position
10398569.64ms return 0 unless (defined $position);
104
105 # allow keywords for left and top position
1069856465ms985659.5ms return 0 if ($position =~ m/^(?:top|left)$/i);
# spent 59.5ms making 9856 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 6µs/call
107
108 # return the parsed pixel number if matched
1091856150ms371231.0ms return $1 if ($position =~ m/^($re_number)(?:px)?$/i);
# spent 21.4ms making 1856 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 12µs/call # spent 9.58ms making 1856 calls to OCBNET::CSS::Parser::Base::CORE:regcomp, avg 5µs/call
110
111 # right/bottom are the only valid keywords
112 # for the position for most other functions
11386441.6ms8644.35ms return 'right' if ($position =~ m/^right$/i);
# spent 4.35ms making 864 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 5µs/call
11443213.9ms4322.09ms return 'bottom' if ($position =~ m/^bottom$/i);
# spent 2.09ms making 432 calls to OCBNET::CSS::Parser::Base::CORE:match, avg 5µs/call
115
116 # die with a fatal error for invalid positions
117 die "unknown background position: <$position>";
118
119}
120
121####################################################################################################
122####################################################################################################
123136µs1;
 
# spent 798ms within OCBNET::CSS::Parser::Base::CORE:match which was called 73848 times, avg 11µs/call: # 41080 times (319ms+0s) by OCBNET::CSS::Parser::Base::fromPx at line 78, avg 8µs/call # 9880 times (297ms+0s) by OCBNET::CSS::Parser::Base::fromUrl at line 86, avg 30µs/call # 9856 times (59.5ms+0s) by OCBNET::CSS::Parser::Base::fromPosition at line 106, avg 6µs/call # 4940 times (65.9ms+0s) by OCBNET::CSS::Parser::Base::fromUrl at line 89, avg 13µs/call # 4940 times (28.5ms+0s) by OCBNET::CSS::Parser::Base::fromUrl at line 88, avg 6µs/call # 1856 times (21.4ms+0s) by OCBNET::CSS::Parser::Base::fromPosition at line 109, avg 12µs/call # 864 times (4.35ms+0s) by OCBNET::CSS::Parser::Base::fromPosition at line 113, avg 5µs/call # 432 times (2.09ms+0s) by OCBNET::CSS::Parser::Base::fromPosition at line 114, avg 5µs/call
sub OCBNET::CSS::Parser::Base::CORE:match; # opcode
# spent 92µs within OCBNET::CSS::Parser::Base::CORE:qr which was called 7 times, avg 13µs/call: # once (37µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 31 # once (14µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 44 # once (9µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 32 # once (8µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 50 # once (8µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 54 # once (8µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 36 # once (8µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 40
sub OCBNET::CSS::Parser::Base::CORE:qr; # opcode
# spent 263ms within OCBNET::CSS::Parser::Base::CORE:regcomp which was called 53009 times, avg 5µs/call: # 41080 times (190ms+0s) by OCBNET::CSS::Parser::Base::fromPx at line 78, avg 5µs/call # 10072 times (63.3ms+0s) by OCBNET::CSS::Parser::Base::uncomment at line 65, avg 6µs/call # 1856 times (9.58ms+0s) by OCBNET::CSS::Parser::Base::fromPosition at line 109, avg 5µs/call # once (50µs+0s) by OCBNET::Spritesets::Canvas::Optimize::BEGIN@28 at line 50
sub OCBNET::CSS::Parser::Base::CORE:regcomp; # opcode
# spent 171ms within OCBNET::CSS::Parser::Base::CORE:subst which was called 10072 times, avg 17µs/call: # 10072 times (171ms+0s) by OCBNET::CSS::Parser::Base::uncomment at line 65, avg 17µs/call
sub OCBNET::CSS::Parser::Base::CORE:subst; # opcode