← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/share/koha/opac/cgi-bin/opac/opac-search.pl
  Run on Tue Oct 15 11:58:52 2013
Reported on Tue Oct 15 12:01:46 2013

Filename/usr/share/perl/5.10/feature.pm
StatementsExecuted 432 statements in 1.26ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
232114951µs1.16msfeature::::importfeature::import
1411159µs159µsfeature::::CORE:substfeature::CORE:subst (opcode)
281147µs47µsfeature::::CORE:substcontfeature::CORE:substcont (opcode)
0000s0sfeature::::croakfeature::croak
0000s0sfeature::::unimportfeature::unimport
0000s0sfeature::::unknown_featurefeature::unknown_feature
0000s0sfeature::::unknown_feature_bundlefeature::unknown_feature_bundle
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package feature;
2
312µsour $VERSION = '1.13';
4
5# (feature name) => (internal name, used in %^H)
615µsmy %feature = (
7 switch => 'feature_switch',
8 say => "feature_say",
9 state => "feature_state",
10);
11
12# NB. the latest bundle must be loaded by the -E switch (see toke.c)
13
14111µsmy %feature_bundle = (
15 "5.10" => [qw(switch say state)],
16### "5.11" => [qw(switch say state)],
17);
18
19# special case
2011µs$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
21
22# TODO:
23# - think about versioned features (use feature switch => 2)
24
25=head1 NAME
26
- -
145
# spent 1.16ms (951µs+206µs) within feature::import which was called 23 times, avg 50µs/call: # 3 times (92µs+0s) by Modern::Perl::import at line 26 of Modern/Perl.pm, avg 31µs/call # once (117µs+29µs) by Modern::Perl::BEGIN@15.1 at line 15 of Modern/Perl.pm # once (66µs+14µs) by Date::Manip::TZ::BEGIN@17 at line 17 of Date/Manip/TZ.pm # once (59µs+19µs) by Date::Manip::BEGIN@11 at line 11 of Date/Manip.pm # once (58µs+18µs) by Date::Manip::Date::BEGIN@17 at line 17 of Date/Manip/Date.pm # once (63µs+13µs) by Date::Manip::TZ::etgmt00::BEGIN@32 at line 32 of Date/Manip/TZ/etgmt00.pm # once (53µs+19µs) by Date::Manip::Base::BEGIN@17 at line 17 of Date/Manip/Base.pm # once (55µs+15µs) by Date::Manip::Zones::BEGIN@18 at line 18 of Date/Manip/Zones.pm # once (55µs+13µs) by Date::Manip::Obj::BEGIN@9 at line 9 of Date/Manip/Obj.pm # once (55µs+11µs) by Koha::DateUtils::BEGIN@21.7 at line 21 of /usr/share/koha/lib/Koha/DateUtils.pm # once (47µs+14µs) by Date::Manip::Recur::BEGIN@17 at line 17 of Date/Manip/Recur.pm # once (47µs+11µs) by Koha::Calendar::BEGIN@4.8 at line 4 of /usr/share/koha/lib/Koha/Calendar.pm # once (43µs+12µs) by Date::Manip::Delta::BEGIN@17 at line 17 of Date/Manip/Delta.pm # once (45µs+10µs) by Date::Manip::Lang::english::BEGIN@23 at line 23 of Date/Manip/Lang/english.pm # once (27µs+7µs) by Date::Manip::Lang::index::BEGIN@22 at line 22 of Date/Manip/Lang/index.pm # once (16µs+0s) by Date::Manip::BEGIN@55 at line 55 of Date/Manip.pm # once (14µs+0s) by Date::Manip::Delta::BEGIN@21 at line 21 of Date/Manip/Delta.pm # once (13µs+0s) by Date::Manip::Base::BEGIN@22 at line 22 of Date/Manip/Base.pm # once (9µs+0s) by Date::Manip::Date::BEGIN@22 at line 22 of Date/Manip/Date.pm # once (9µs+0s) by Date::Manip::Recur::BEGIN@21 at line 21 of Date/Manip/Recur.pm # once (8µs+0s) by Date::Manip::TZ::BEGIN@20 at line 20 of Date/Manip/TZ.pm
sub import {
1462337µs my $class = shift;
1472331µs if (@_ == 0) {
148 croak("No features specified");
149 }
15023161µs while (@_) {
1517447µs my $name = shift(@_);
1527488µs if (substr($name, 0, 1) eq ":") {
1531717µs my $v = substr($name, 1);
1541733µs if (!exists $feature_bundle{$v}) {
15514463µs42206µs $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
# spent 159µs making 14 calls to feature::CORE:subst, avg 11µs/call # spent 47µs making 28 calls to feature::CORE:substcont, avg 2µs/call
1561420µs if (!exists $feature_bundle{$v}) {
157 unknown_feature_bundle(substr($name, 1));
158 }
159 }
1601769µs unshift @_, @{$feature_bundle{$v}};
1611735µs next;
162 }
1635736µs if (!exists $feature{$name}) {
164 unknown_feature($name);
165 }
16657190µs $^H{$feature{$name}} = 1;
167 }
168}
169
170sub unimport {
171 my $class = shift;
172
173 # A bare C<no feature> should disable *all* features
174 if (!@_) {
175 delete @^H{ values(%feature) };
176 return;
177 }
178
179 while (@_) {
180 my $name = shift;
181 if (substr($name, 0, 1) eq ":") {
182 my $v = substr($name, 1);
183 if (!exists $feature_bundle{$v}) {
184 $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
185 if (!exists $feature_bundle{$v}) {
186 unknown_feature_bundle(substr($name, 1));
187 }
188 }
189 unshift @_, @{$feature_bundle{$v}};
190 next;
191 }
192 if (!exists($feature{$name})) {
193 unknown_feature($name);
194 }
195 else {
196 delete $^H{$feature{$name}};
197 }
198 }
199}
200
201sub unknown_feature {
202 my $feature = shift;
203 croak(sprintf('Feature "%s" is not supported by Perl %vd',
204 $feature, $^V));
205}
206
207sub unknown_feature_bundle {
208 my $feature = shift;
209 croak(sprintf('Feature bundle "%s" is not supported by Perl %vd',
210 $feature, $^V));
211}
212
213sub croak {
214 require Carp;
215 Carp::croak(@_);
216}
217
218110µs1;
 
# spent 159µs within feature::CORE:subst which was called 14 times, avg 11µs/call: # 14 times (159µs+0s) by feature::import at line 155, avg 11µs/call
sub feature::CORE:subst; # opcode
# spent 47µs within feature::CORE:substcont which was called 28 times, avg 2µs/call: # 28 times (47µs+0s) by feature::import at line 155, avg 2µs/call
sub feature::CORE:substcont; # opcode