← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/local/src/github.com/foswiki/core/bin/view
  Run on Sun Dec 4 17:17:59 2011
Reported on Sun Dec 4 17:26:34 2011

Filename/usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugins/SmiliesPlugin.pm
StatementsExecuted 1381 statements in 21.3ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11511111.7ms14.1msFoswiki::Plugins::SmiliesPlugin::::commonTagsHandlerFoswiki::Plugins::SmiliesPlugin::commonTagsHandler
1157318.02ms8.02msFoswiki::Plugins::SmiliesPlugin::::CORE:substFoswiki::Plugins::SmiliesPlugin::CORE:subst (opcode)
1111.11ms20.3sFoswiki::Plugins::SmiliesPlugin::::initPluginFoswiki::Plugins::SmiliesPlugin::initPlugin
11621300µs300µsFoswiki::Plugins::SmiliesPlugin::::CORE:matchFoswiki::Plugins::SmiliesPlugin::CORE:match (opcode)
511125µs5.79msFoswiki::Plugins::SmiliesPlugin::::preRenderingHandlerFoswiki::Plugins::SmiliesPlugin::preRenderingHandler
51184µs84µsFoswiki::Plugins::SmiliesPlugin::::CORE:regcompFoswiki::Plugins::SmiliesPlugin::CORE:regcomp (opcode)
11125µs33µsFoswiki::Plugins::SmiliesPlugin::::BEGIN@7Foswiki::Plugins::SmiliesPlugin::BEGIN@7
11117µs245µsFoswiki::Plugins::SmiliesPlugin::::BEGIN@12Foswiki::Plugins::SmiliesPlugin::BEGIN@12
11117µs34µsFoswiki::Plugins::SmiliesPlugin::::BEGIN@8Foswiki::Plugins::SmiliesPlugin::BEGIN@8
1119µs9µsFoswiki::Plugins::SmiliesPlugin::::BEGIN@10Foswiki::Plugins::SmiliesPlugin::BEGIN@10
0000s0sFoswiki::Plugins::SmiliesPlugin::::_allSmiliesTableFoswiki::Plugins::SmiliesPlugin::_allSmiliesTable
0000s0sFoswiki::Plugins::SmiliesPlugin::::_renderSmilyFoswiki::Plugins::SmiliesPlugin::_renderSmily
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# See bottom of file for license and copyright information
2#
3# This plugin replaces smilies with small smilies bitmaps
4
5package Foswiki::Plugins::SmiliesPlugin;
6
7246µs240µs
# spent 33µs (25+8) within Foswiki::Plugins::SmiliesPlugin::BEGIN@7 which was called: # once (25µs+8µs) by Foswiki::Plugin::BEGIN@2.15 at line 7
use strict;
# spent 33µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@7 # spent 8µs making 1 call to strict::import
8246µs252µs
# spent 34µs (17+18) within Foswiki::Plugins::SmiliesPlugin::BEGIN@8 which was called: # once (17µs+18µs) by Foswiki::Plugin::BEGIN@2.15 at line 8
use warnings;
# spent 34µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@8 # spent 18µs making 1 call to warnings::import
9
102268µs19µs
# spent 9µs within Foswiki::Plugins::SmiliesPlugin::BEGIN@10 which was called: # once (9µs+0s) by Foswiki::Plugin::BEGIN@2.15 at line 10
use Foswiki::Func ();
# spent 9µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@10
11
121228µs
# spent 245µs (17+228) within Foswiki::Plugins::SmiliesPlugin::BEGIN@12 which was called: # once (17µs+228µs) by Foswiki::Plugin::BEGIN@2.15 at line 14
use vars qw(
# spent 228µs making 1 call to vars::import
13 %smiliesUrls %smiliesEmotions
142885µs1245µs $smiliesPubUrl $allPattern $smiliesFormat );
# spent 245µs making 1 call to Foswiki::Plugins::SmiliesPlugin::BEGIN@12
15
1612µsour $VERSION = '$Rev$';
1711µsour $RELEASE = '20 Sep 2009';
1811µsour $NO_PREFS_IN_TOPIC = 1;
1911µsour $SHORTDESCRIPTION = 'Render smilies like :-) as icons';
20
21
# spent 20.3s (1.11ms+20.3) within Foswiki::Plugins::SmiliesPlugin::initPlugin which was called: # once (1.11ms+20.3s) by Foswiki::Plugin::__ANON__[/usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm:235] at line 228 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm
sub initPlugin {
222121.41ms my ( $topic, $web, $user, $installWeb ) = @_;
23
24 # Get plugin preferences
25182µs $smiliesFormat = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_FORMAT')
# spent 82µs making 1 call to Foswiki::Func::getPreferencesValue
26 || '<img src="$url" alt="$tooltip" title="$tooltip" border="0" />';
27
28180µs $topic = Foswiki::Func::getPreferencesValue('SMILIESPLUGIN_TOPIC')
# spent 80µs making 1 call to Foswiki::Func::getPreferencesValue
29 || "$installWeb.SmiliesPlugin";
30
31 $web = $installWeb;
32110µs if ( $topic =~ /(.+)\.(.+)/ ) {
# spent 10µs making 1 call to Foswiki::Plugins::SmiliesPlugin::CORE:match
33 $web = $1;
34 $topic = $2;
35 }
36
37 $allPattern = "(";
38120.3s foreach (
# spent 20.3s making 1 call to Foswiki::Func::readTopicText
39 split( /\n/, Foswiki::Func::readTopicText( $web, $topic, undef, 1 ) ) )
40 {
41
42 # smilie url emotion
43115291µs if (
# spent 291µs making 115 calls to Foswiki::Plugins::SmiliesPlugin::CORE:match, avg 3µs/call
44m/^\s*\|\s*<nop>(?:\&nbsp\;)?([^\s|]+)\s*\|\s*%ATTACHURL%\/([^\s]+)\s*\|\s*"([^"|]+)"\s*\|\s*$/o
45 )
46 {
47 $allPattern .= "\Q$1\E|";
48 $smiliesUrls{$1} = $2;
49 $smiliesEmotions{$1} = $3;
50 }
51 }
5216µs $allPattern =~ s/\|$//o;
# spent 6µs making 1 call to Foswiki::Plugins::SmiliesPlugin::CORE:subst
53 $allPattern .= ")";
54112µs $smiliesPubUrl = Foswiki::Func::getPubUrlPath() . "/$web/$topic";
# spent 12µs making 1 call to Foswiki::Func::getPubUrlPath
55
56 # Initialization OK
57 return 1;
58}
59
60
# spent 14.1ms (11.7+2.43) within Foswiki::Plugins::SmiliesPlugin::commonTagsHandler which was called 1151 times, avg 12µs/call: # 1151 times (11.7ms+2.43ms) by Foswiki::Plugin::invoke at line 287 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm, avg 12µs/call
sub commonTagsHandler {
61
62 # my ( $text, $topic, $web ) = @_;
63115112.8ms11512.43ms $_[0] =~ s/%SMILIES%/_allSmiliesTable()/geo;
# spent 2.43ms making 1151 calls to Foswiki::Plugins::SmiliesPlugin::CORE:subst, avg 2µs/call
64}
65
66
# spent 5.79ms (125µs+5.67) within Foswiki::Plugins::SmiliesPlugin::preRenderingHandler which was called 5 times, avg 1.16ms/call: # 5 times (125µs+5.67ms) by Foswiki::Plugin::invoke at line 287 of /usr/local/src/github.com/foswiki/core/lib/Foswiki/Plugin.pm, avg 1.16ms/call
sub preRenderingHandler {
67
68 # my ( $text, \%removed ) = @_;
69
7055.77ms105.67ms $_[0] =~ s/(\s|^)$allPattern(?=\s|$)/_renderSmily($1,$2)/geo;
# spent 5.58ms making 5 calls to Foswiki::Plugins::SmiliesPlugin::CORE:subst, avg 1.12ms/call # spent 84µs making 5 calls to Foswiki::Plugins::SmiliesPlugin::CORE:regcomp, avg 17µs/call
71}
72
73sub _renderSmily {
74 my ( $thePre, $theSmily ) = @_;
75
76 return $thePre unless $theSmily;
77
78 my $text = $thePre . $smiliesFormat;
79 $text =~ s/\$emoticon/$theSmily/go;
80 $text =~ s/\$tooltip/$smiliesEmotions{$theSmily}/go;
81 $text =~ s/\$url/$smiliesPubUrl\/$smiliesUrls{$theSmily}/go;
82
83 return $text;
84}
85
86sub _allSmiliesTable {
87 my $text = "| *What to Type* | *Graphic That Will Appear* | *Emotion* |\n";
88
89 foreach my $k (
90 sort { $smiliesEmotions{$b} cmp $smiliesEmotions{$a} }
91 keys %smiliesEmotions
92 )
93 {
94 $text .= "| <nop>$k | $k | " . $smiliesEmotions{$k} . " |\n";
95 }
96 return $text;
97}
98
9916µs1;
100__END__
 
# spent 300µs within Foswiki::Plugins::SmiliesPlugin::CORE:match which was called 116 times, avg 3µs/call: # 115 times (291µs+0s) by Foswiki::Plugins::SmiliesPlugin::initPlugin at line 43, avg 3µs/call # once (10µs+0s) by Foswiki::Plugins::SmiliesPlugin::initPlugin at line 32
sub Foswiki::Plugins::SmiliesPlugin::CORE:match; # opcode
# spent 84µs within Foswiki::Plugins::SmiliesPlugin::CORE:regcomp which was called 5 times, avg 17µs/call: # 5 times (84µs+0s) by Foswiki::Plugins::SmiliesPlugin::preRenderingHandler at line 70, avg 17µs/call
sub Foswiki::Plugins::SmiliesPlugin::CORE:regcomp; # opcode
# spent 8.02ms within Foswiki::Plugins::SmiliesPlugin::CORE:subst which was called 1157 times, avg 7µs/call: # 1151 times (2.43ms+0s) by Foswiki::Plugins::SmiliesPlugin::commonTagsHandler at line 63, avg 2µs/call # 5 times (5.58ms+0s) by Foswiki::Plugins::SmiliesPlugin::preRenderingHandler at line 70, avg 1.12ms/call # once (6µs+0s) by Foswiki::Plugins::SmiliesPlugin::initPlugin at line 52
sub Foswiki::Plugins::SmiliesPlugin::CORE:subst; # opcode