← Index
NYTProf Performance Profile   « line view »
For starman worker -M FindBin --max-requests 50 --workers 2 --user=kohadev-koha --group kohadev-koha --pid /var/run/koha/kohadev/plack.pid --daemonize --access-log /var/log/koha/kohadev/plack.log --error-log /var/log/koha/kohadev/plack-error.log -E deployment --socket /var/run/koha/kohadev/plack.sock /etc/koha/sites/kohadev/plack.psgi
  Run on Fri Jan 8 14:31:06 2016
Reported on Fri Jan 8 14:33:27 2016

Filename/usr/lib/x86_64-linux-gnu/perl5/5.20/Template/Base.pm
StatementsExecuted 56 statements in 105µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.91ms6.98msTemplate::Base::::BEGIN@24Template::Base::BEGIN@24
2873559µs20.8msTemplate::Base::::newTemplate::Base::new (recurses: max depth 3, inclusive time 37.2ms)
11118µs24µsTemplate::Base::::BEGIN@22Template::Base::BEGIN@22
11113µs24µsTemplate::Base::::BEGIN@44Template::Base::BEGIN@44
11110µs28µsTemplate::Base::::BEGIN@45Template::Base::BEGIN@45
11110µs16µsTemplate::Base::::BEGIN@85Template::Base::BEGIN@85
1119µs15µsTemplate::Base::::BEGIN@137Template::Base::BEGIN@137
1117µs12µsTemplate::Base::::BEGIN@23Template::Base::BEGIN@23
0000s0sTemplate::Base::::_initTemplate::Base::_init
0000s0sTemplate::Base::::debugTemplate::Base::debug
0000s0sTemplate::Base::::errorTemplate::Base::error
0000s0sTemplate::Base::::module_versionTemplate::Base::module_version
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1#============================================================= -*-perl-*-
2#
3# Template::Base
4#
5# DESCRIPTION
6# Base class module implementing common functionality for various other
7# Template Toolkit modules.
8#
9# AUTHOR
10# Andy Wardley <abw@wardley.org>
11#
12# COPYRIGHT
13# Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved.
14#
15# This module is free software; you can redistribute it and/or
16# modify it under the same terms as Perl itself.
17#
18#========================================================================
19
20package Template::Base;
21
22231µs
# spent 24µs (18+7) within Template::Base::BEGIN@22 which was called: # once (18µs+7µs) by base::import at line 22
use strict;
# spent 24µs making 1 call to Template::Base::BEGIN@22 # spent 7µs making 1 call to strict::import
23216µs
# spent 12µs (7+4) within Template::Base::BEGIN@23 which was called: # once (7µs+4µs) by base::import at line 23
use warnings;
# spent 12µs making 1 call to Template::Base::BEGIN@23 # spent 4µs making 1 call to warnings::import
2427.01ms
# spent 6.98ms (1.91+5.06) within Template::Base::BEGIN@24 which was called: # once (1.91ms+5.06ms) by base::import at line 24
use Template::Constants;
# spent 6.98ms making 1 call to Template::Base::BEGIN@24 # spent 27µs making 1 call to Exporter::import
25
26our $VERSION = 2.78;
27
28
29#------------------------------------------------------------------------
30# new(\%params)
31#
32# General purpose constructor method which expects a hash reference of
33# configuration parameters, or a list of name => value pairs which are
34# folded into a hash. Blesses a hash into an object and calls its
35# _init() method, passing the parameter hash reference. Returns a new
36# object derived from Template::Base, or undef on error.
37#------------------------------------------------------------------------
38
39
# spent 20.8ms (559µs+20.2) within Template::Base::new which was called 28 times, avg 743µs/call: # 4 times (182µs+20.5ms) by C4::Templates::new at line 64 of C4/Templates.pm, avg 5.17ms/call # 4 times (96µs+17µs) by Template::Parser::new at line 162 of Template/Parser.pm, avg 28µs/call # 4 times (56µs+-56µs) by Template::Config::service at line 231 of Template/Config.pm, avg 0s/call # 4 times (50µs+-50µs) by Template::Config::filters at line 159 of Template/Config.pm, avg 0s/call # 4 times (63µs+-63µs) by Template::Config::provider at line 121 of Template/Config.pm, avg 0s/call # 4 times (65µs+-65µs) by Template::Config::context at line 213 of Template/Config.pm, avg 0s/call # 4 times (48µs+-48µs) by Template::Config::plugins at line 140 of Template/Config.pm, avg 0s/call
sub new {
4074µs my $class = shift;
4172µs my ($argnames, @args, $arg, $cfg);
42# $class->error(''); # always clear package $ERROR var?
43
4473µs235µs
# spent 24µs (13+11) within Template::Base::BEGIN@44 which was called: # once (13µs+11µs) by base::import at line 44
{ no strict 'refs';
# spent 24µs making 1 call to Template::Base::BEGIN@44 # spent 11µs making 1 call to strict::unimport
45245µs
# spent 28µs (10+17) within Template::Base::BEGIN@45 which was called: # once (10µs+17µs) by base::import at line 45
no warnings 'once';
# spent 28µs making 1 call to Template::Base::BEGIN@45 # spent 17µs making 1 call to warnings::unimport
46716µs $argnames = \@{"$class\::BASEARGS"} || [ ];
47 }
48
49 # shift off all mandatory args, returning error if undefined or null
5074µs foreach $arg (@$argnames) {
51 return $class->error("no $arg specified")
52 unless ($cfg = shift);
53 push(@args, $cfg);
54 }
55
56 # fold all remaining args into a hash, or use provided hash ref
57710µs $cfg = defined $_[0] && ref($_[0]) eq 'HASH' ? shift : { @_ };
58
59 my $self = bless {
60717µs (map { ($_ => shift @args) } @$argnames),
61 _ERROR => '',
62 DEBUG => 0,
63 }, $class;
64
65749µs2857.4ms return $self->_init($cfg) ? $self : $class->error($self->error);
# spent 20.5ms making 4 calls to Template::_init, avg 5.13ms/call # spent 20.2ms making 4 calls to Template::Service::_init, avg 5.06ms/call # spent 16.3ms making 4 calls to Template::Context::_init, avg 4.07ms/call # spent 171µs making 4 calls to Template::Plugins::_init, avg 43µs/call # spent 152µs making 4 calls to Template::Provider::_init, avg 38µs/call # spent 26µs making 4 calls to Template::Filters::_init, avg 6µs/call # spent 17µs making 4 calls to Template::Directive::_init, avg 4µs/call
66}
67
68
69#------------------------------------------------------------------------
70# error()
71# error($msg, ...)
72#
73# May be called as a class or object method to set or retrieve the
74# package variable $ERROR (class method) or internal member
75# $self->{ _ERROR } (object method). The presence of parameters indicates
76# that the error value should be set. Undef is then returned. In the
77# abscence of parameters, the current error value is returned.
78#------------------------------------------------------------------------
79
80sub error {
81 my $self = shift;
82 my $errvar;
83
84 {
85222µs
# spent 16µs (10+6) within Template::Base::BEGIN@85 which was called: # once (10µs+6µs) by base::import at line 85
no strict qw( refs );
# spent 16µs making 1 call to Template::Base::BEGIN@85 # spent 6µs making 1 call to strict::unimport
86 $errvar = ref $self ? \$self->{ _ERROR } : \${"$self\::ERROR"};
87 }
88 if (@_) {
89 $$errvar = ref($_[0]) ? shift : join('', @_);
90 return undef;
91 }
92 else {
93 return $$errvar;
94 }
95}
96
97
98#------------------------------------------------------------------------
99# _init()
100#
101# Initialisation method called by the new() constructor and passing a
102# reference to a hash array containing any configuration items specified
103# as constructor arguments. Should return $self on success or undef on
104# error, via a call to the error() method to set the error message.
105#------------------------------------------------------------------------
106
107sub _init {
108 my ($self, $config) = @_;
109 return $self;
110}
111
112
113sub debug {
114 my $self = shift;
115 my $msg = join('', @_);
116 my ($pkg, $file, $line) = caller();
117
118 unless ($msg =~ /\n$/) {
119 $msg .= ($self->{ DEBUG } & Template::Constants::DEBUG_CALLER)
120 ? " at $file line $line\n"
121 : "\n";
122 }
123
124 print STDERR "[$pkg] $msg";
125}
126
127
128#------------------------------------------------------------------------
129# module_version()
130#
131# Returns the current version number.
132#------------------------------------------------------------------------
133
134sub module_version {
135 my $self = shift;
136 my $class = ref $self || $self;
137221µs
# spent 15µs (9+6) within Template::Base::BEGIN@137 which was called: # once (9µs+6µs) by base::import at line 137
no strict 'refs';
# spent 15µs making 1 call to Template::Base::BEGIN@137 # spent 6µs making 1 call to strict::unimport
138 return ${"${class}::VERSION"};
139}
140
141
1421;
143
144__END__