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

Filename/home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/Selectors.pm
StatementsExecuted 21 statements in 6.06ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
8813.08ms3.08msOCBNET::CSS::Parser::Selectors::::CORE:regcompOCBNET::CSS::Parser::Selectors::CORE:regcomp (opcode)
88181µs81µsOCBNET::CSS::Parser::Selectors::::CORE:qrOCBNET::CSS::Parser::Selectors::CORE:qr (opcode)
11181µs177µsOCBNET::CSS::Parser::Selectors::::BEGIN@10OCBNET::CSS::Parser::Selectors::BEGIN@10
11164µs64µsOCBNET::CSS::Parser::Selectors::::BEGIN@19.8OCBNET::CSS::Parser::Selectors::BEGIN@19.8
11159µs768µsOCBNET::CSS::Parser::Selectors::::BEGIN@29OCBNET::CSS::Parser::Selectors::BEGIN@29
11157µs88µsOCBNET::CSS::Parser::Selectors::::BEGIN@11OCBNET::CSS::Parser::Selectors::BEGIN@11
11133µs33µsOCBNET::CSS::Parser::Selectors::::BEGIN@22OCBNET::CSS::Parser::Selectors::BEGIN@22
11129µs29µsOCBNET::CSS::Parser::Selectors::::BEGIN@25OCBNET::CSS::Parser::Selectors::BEGIN@25
11126µs26µsOCBNET::CSS::Parser::Selectors::::BEGIN@16OCBNET::CSS::Parser::Selectors::BEGIN@16
11122µs22µsOCBNET::CSS::Parser::Selectors::::BEGIN@19OCBNET::CSS::Parser::Selectors::BEGIN@19
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# regular expressions to match css2/css3 selectors
6####################################################################################################
7package OCBNET::CSS::Parser::Selectors;
8####################################################################################################
9
102151µs2273µs
# spent 177µs (81+96) within OCBNET::CSS::Parser::Selectors::BEGIN@10 which was called: # once (81µs+96µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 10
use strict;
# spent 177µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@10 # spent 96µs making 1 call to strict::import
112212µs2120µs
# spent 88µs (57+32) within OCBNET::CSS::Parser::Selectors::BEGIN@11 which was called: # once (57µs+32µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 11
use warnings;
# spent 88µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@11 # spent 32µs making 1 call to warnings::import
12
13####################################################################################################
14
15# define our version string
161143µs126µs
# spent 26µs within OCBNET::CSS::Parser::Selectors::BEGIN@16 which was called: # once (26µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 16
BEGIN { $OCBNET::CSS::Parser::Selectors::VERSION = "0.8.2"; }
# spent 26µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@16
17
18# load exporter and inherit from it
193486µs286µs
# spent 22µs within OCBNET::CSS::Parser::Selectors::BEGIN@19 which was called: # once (22µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 19 # spent 64µs within OCBNET::CSS::Parser::Selectors::BEGIN@19.8 which was called: # once (64µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 19
BEGIN { use Exporter qw(); our @ISA = qw(Exporter); }
# spent 64µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@19.8 # spent 22µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@19
20
21# define our functions that will be exported
221193µs133µs
# spent 33µs within OCBNET::CSS::Parser::Selectors::BEGIN@22 which was called: # once (33µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 22
BEGIN { our @EXPORT = qw($re_css_selector_rules); }
# spent 33µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@22
23
24# define our functions than can be exported
251159µs129µs
# spent 29µs within OCBNET::CSS::Parser::Selectors::BEGIN@25 which was called: # once (29µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 25
BEGIN { our @EXPORT_OK = qw($re_css_selector_rule $re_options); }
# spent 29µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@25
26
27####################################################################################################
28
2921.13ms21.48ms
# spent 768µs (59+709) within OCBNET::CSS::Parser::Selectors::BEGIN@29 which was called: # once (59µs+709µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 29
use OCBNET::CSS::Parser::Base;
# spent 768µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@29 # spent 709µs making 1 call to Exporter::import
30
31####################################################################################################
32
33# create matchers for the various css selector types
341136µs268µsour $re_css_id = qr/\#$re_css_name/; # select single id
# spent 55µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 13µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
35184µs249µsour $re_css_tag = qr/(?:$re_css_name|\*)/; # select single tag
# spent 40µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
36176µs237µsour $re_css_class = qr/\.$re_css_name/; # select single class
# spent 29µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 8µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
37179µs246µsour $re_css_pseudo = qr/\:{1,2}$re_css_name/; # select single pseudo
# spent 38µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 8µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
38
39# select attributes and its content with advanced css2/css3 selectors
401151µs2116µsour $re_css_attr = qr/\[$re_css_name\s*(?:[\~\^\$\*\|]?=\s*(?:\'$re_apo\'|\"$re_quot\"|[^\)]*))?\]/;
# spent 106µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
41
42####################################################################################################
43
44# create expression to match a single rule
45# example : DIV#id.class1.class2:hover
461470µs2433µsour $re_css_selector = qr/(?:
# spent 423µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
47 \*
48 | $re_css_attr* $re_css_pseudo+
49 | $re_css_class+ $re_css_attr* $re_css_pseudo*
50 | $re_css_id $re_css_class* $re_css_attr* $re_css_pseudo*
51 | $re_css_tag $re_css_id? $re_css_class* $re_css_attr* $re_css_pseudo*
52)/x;
53
54####################################################################################################
55
56# create expression to match complex rules
57# example : #id DIV.class FORM A:hover
581892µs2851µsour $re_css_selector_rule = qr/$re_css_selector(?:(?:\s*[\>\+\~]\s*|\s+)$re_css_selector)*/;
# spent 840µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 10µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
59
60####################################################################################################
61
62# create expression to match multiple complex rules
63# example : #id DIV.class FORM A:hover, BODY DIV.header
6411.61ms21.56msour $re_css_selector_rules = qr/$re_css_selector_rule(?:\s*,\s*$re_css_selector_rule)*/;
# spent 1.55ms making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp # spent 14µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr
65
66####################################################################################################
67####################################################################################################
68188µs1;
 
# spent 81µs within OCBNET::CSS::Parser::Selectors::CORE:qr which was called 8 times, avg 10µs/call: # once (14µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 64 # once (13µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 34 # once (10µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 58 # once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 46 # once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 40 # once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 35 # once (8µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 36 # once (8µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 37
sub OCBNET::CSS::Parser::Selectors::CORE:qr; # opcode
# spent 3.08ms within OCBNET::CSS::Parser::Selectors::CORE:regcomp which was called 8 times, avg 385µs/call: # once (1.55ms+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 64 # once (840µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 58 # once (423µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 46 # once (106µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 40 # once (55µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 34 # once (40µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 35 # once (38µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 37 # once (29µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 36
sub OCBNET::CSS::Parser::Selectors::CORE:regcomp; # opcode