← 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 17:10:45 2013
Reported on Tue Oct 15 17:12:39 2013

Filename/usr/share/perl5/DateTime/Format/Builder.pm
StatementsExecuted 91 statements in 1.89ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111114µs3.98msDateTime::Format::Builder::::create_classDateTime::Format::Builder::create_class
31189µs3.78msDateTime::Format::Builder::::create_end_parserDateTime::Format::Builder::create_end_parser
11140µs162µsDateTime::Format::Builder::::BEGIN@12DateTime::Format::Builder::BEGIN@12
31139µs3.67msDateTime::Format::Builder::::create_parserDateTime::Format::Builder::create_parser
11135µs35µsDateTime::Format::Builder::::BEGIN@11DateTime::Format::Builder::BEGIN@11
11122µs27µsDateTime::Format::Builder::::BEGIN@10DateTime::Format::Builder::BEGIN@10
11119µs19µsDateTime::Format::Builder::::create_constructorDateTime::Format::Builder::create_constructor
11119µs39µsDateTime::Format::Builder::::BEGIN@13DateTime::Format::Builder::BEGIN@13
31118µs18µsDateTime::Format::Builder::::create_methodDateTime::Format::Builder::create_method
11117µs135µsDateTime::Format::Builder::::BEGIN@14DateTime::Format::Builder::BEGIN@14
11113µs3.99msDateTime::Format::Builder::::importDateTime::Format::Builder::import
11112µs29µsDateTime::Format::Builder::::BEGIN@122DateTime::Format::Builder::BEGIN@122
11111µs36µsDateTime::Format::Builder::::BEGIN@76DateTime::Format::Builder::BEGIN@76
11110µs46µsDateTime::Format::Builder::::BEGIN@17DateTime::Format::Builder::BEGIN@17
0000s0sDateTime::Format::Builder::::__ANON__[:134]DateTime::Format::Builder::__ANON__[:134]
0000s0sDateTime::Format::Builder::::__ANON__[:190]DateTime::Format::Builder::__ANON__[:190]
0000s0sDateTime::Format::Builder::::__ANON__[:230]DateTime::Format::Builder::__ANON__[:230]
0000s0sDateTime::Format::Builder::::cloneDateTime::Format::Builder::clone
0000s0sDateTime::Format::Builder::::format_datetimeDateTime::Format::Builder::format_datetime
0000s0sDateTime::Format::Builder::::get_parserDateTime::Format::Builder::get_parser
0000s0sDateTime::Format::Builder::::newDateTime::Format::Builder::new
0000s0sDateTime::Format::Builder::::on_failDateTime::Format::Builder::on_fail
0000s0sDateTime::Format::Builder::::parse_datetimeDateTime::Format::Builder::parse_datetime
0000s0sDateTime::Format::Builder::::parserDateTime::Format::Builder::parser
0000s0sDateTime::Format::Builder::::set_parserDateTime::Format::Builder::set_parser
0000s0sDateTime::Format::Builder::::verboseDateTime::Format::Builder::verbose
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package DateTime::Format::Builder;
2# $Id: Builder.pm 3748 2007-09-01 20:56:42Z autarch $
3
4=begin comments
5
- -
10332µs231µs
# spent 27µs (22+4) within DateTime::Format::Builder::BEGIN@10 which was called: # once (22µs+4µs) by DateTime::Format::MySQL::BEGIN@11 at line 10
use strict;
# spent 27µs making 1 call to DateTime::Format::Builder::BEGIN@10 # spent 4µs making 1 call to strict::import
11355µs135µs
# spent 35µs within DateTime::Format::Builder::BEGIN@11 which was called: # once (35µs+0s) by DateTime::Format::MySQL::BEGIN@11 at line 11
use 5.005;
# spent 35µs making 1 call to DateTime::Format::Builder::BEGIN@11
12366µs2284µs
# spent 162µs (40+122) within DateTime::Format::Builder::BEGIN@12 which was called: # once (40µs+122µs) by DateTime::Format::MySQL::BEGIN@11 at line 12
use Carp;
# spent 162µs making 1 call to DateTime::Format::Builder::BEGIN@12 # spent 122µs making 1 call to Exporter::import
13369µs358µs
# spent 39µs (19+20) within DateTime::Format::Builder::BEGIN@13 which was called: # once (19µs+20µs) by DateTime::Format::MySQL::BEGIN@11 at line 13
use DateTime 0.12;
# spent 39µs making 1 call to DateTime::Format::Builder::BEGIN@13 # spent 17µs making 1 call to UNIVERSAL::VERSION # spent 2µs making 1 call to UNIVERSAL::import
14112µs1118µs
# spent 135µs (17+118) within DateTime::Format::Builder::BEGIN@14 which was called: # once (17µs+118µs) by DateTime::Format::MySQL::BEGIN@11 at line 16
use Params::Validate qw(
# spent 118µs making 1 call to Exporter::import
15 validate SCALAR ARRAYREF HASHREF SCALARREF CODEREF GLOB GLOBREF UNDEF
16230µs1135µs);
# spent 135µs making 1 call to DateTime::Format::Builder::BEGIN@14
173200µs282µs
# spent 46µs (10+36) within DateTime::Format::Builder::BEGIN@17 which was called: # once (10µs+36µs) by DateTime::Format::MySQL::BEGIN@11 at line 17
use vars qw( $VERSION %dispatch_data );
# spent 46µs making 1 call to DateTime::Format::Builder::BEGIN@17 # spent 36µs making 1 call to vars::import
18
1911µsmy $parser = 'DateTime::Format::Builder::Parser';
201600ns$VERSION = '0.7901';
21
22# Developer oriented methods
23
24=pod
25
- -
30sub verbose
31{
32 warn "Use of verbose() deprecated for the interim.";
33 1;
34}
35
36=pod
37
- -
45sub import
46
# spent 3.99ms (13µs+3.98) within DateTime::Format::Builder::import which was called: # once (13µs+3.98ms) by DateTime::Format::MySQL::BEGIN@11 at line 11 of DateTime/Format/MySQL.pm
{
4712µs my $class = shift;
48110µs13.98ms $class->create_class( @_, class => (caller)[0] ) if @_;
# spent 3.98ms making 1 call to DateTime::Format::Builder::create_class
49}
50
51=pod
52
- -
58sub create_class
59
# spent 3.98ms (114µs+3.86) within DateTime::Format::Builder::create_class which was called: # once (114µs+3.86ms) by DateTime::Format::Builder::import at line 48
{
6011µs my $class = shift;
61192µs167µs my %args = validate( @_, {
# spent 67µs making 1 call to Params::Validate::_validate
# spent 4µs executing statements in string eval
62 class => { type => SCALAR, default => (caller)[0] },
63 version => { type => SCALAR, optional => 1 },
64 verbose => { type => SCALAR|GLOBREF|GLOB, optional => 1 },
65 parsers => { type => HASHREF },
66 groups => { type => HASHREF, optional => 1 },
67 constructor => { type => UNDEF|SCALAR|CODEREF, optional => 1 },
68 });
69
701900ns verbose( $args{verbose} ) if exists $args{verbose};
71
7211µs my $target = $args{class}; # where we're writing our methods and such.
73
74 # Create own lovely new package
75 {
764261µs261µs
# spent 36µs (11+25) within DateTime::Format::Builder::BEGIN@76 which was called: # once (11µs+25µs) by DateTime::Format::MySQL::BEGIN@11 at line 76
no strict 'refs';
# spent 36µs making 1 call to DateTime::Format::Builder::BEGIN@76 # spent 25µs making 1 call to strict::unimport
77
78
791700ns ${"${target}::VERSION"} = $args{version} if exists $args{version};
80
8116µs119µs $class->create_constructor(
# spent 19µs making 1 call to DateTime::Format::Builder::create_constructor
82 $target, exists $args{constructor}, $args{constructor} );
83
84 # Turn groups of parser specs in to groups of parsers
85 {
8621µs my $specs = $args{groups};
871400ns my %groups;
88
8913µs for my $label ( keys %$specs )
90 {
91 my $parsers = $specs->{$label};
92 my $code = $class->create_parser( $parsers );
93 $groups{$label} = $code;
94 }
95
9613µs $dispatch_data{$target} = \%groups;
97 }
98
99 # Write all our parser methods, creating parsers as we go.
100119µs while (my ($method, $parsers) = each %{ $args{parsers} })
101 {
10235µs my $globname = $target."::$method";
10336µs croak "Will not override a preexisting method $method()" if defined &{$globname};
104384µs33.78ms *$globname = $class->create_end_parser( $parsers );
# spent 3.78ms making 3 calls to DateTime::Format::Builder::create_end_parser, avg 1.26ms/call
105 }
106 }
107
108}
109
110sub create_constructor
111
# spent 19µs within DateTime::Format::Builder::create_constructor which was called: # once (19µs+0s) by DateTime::Format::Builder::create_class at line 81
{
11212µs my $class = shift;
11312µs my ( $target, $intended, $value ) = @_;
114
11512µs my $new = $target."::new";
1161500ns $value = 1 unless $intended;
117
1181200ns return unless $value;
11912µs return if not $intended and defined &$new;
1201800ns croak "Will not override a preexisting constructor new()" if defined &$new;
121
1223714µs245µs
# spent 29µs (12+16) within DateTime::Format::Builder::BEGIN@122 which was called: # once (12µs+16µs) by DateTime::Format::MySQL::BEGIN@11 at line 122
no strict 'refs';
# spent 29µs making 1 call to DateTime::Format::Builder::BEGIN@122 # spent 16µs making 1 call to strict::unimport
123
12411µs return *$new = $value if ref $value eq 'CODE';
125 return *$new = sub {
126 my $class = shift;
127 croak "${class}->new takes no parameters." if @_;
128
129 my $self = bless {}, ref($class)||$class;
130 # If called on an object, clone, but we've nothing to
131 # clone
132
133 $self;
134112µs };
135}
136
137=pod
138
- -
145sub create_parser
146
# spent 3.67ms (39µs+3.63) within DateTime::Format::Builder::create_parser which was called 3 times, avg 1.22ms/call: # 3 times (39µs+3.63ms) by DateTime::Format::Builder::create_end_parser at line 174, avg 1.22ms/call
{
14733µs my $class = shift;
14834µs my @common = ( maker => $class );
149313µs if (@_ == 1)
150 {
15131µs my $parsers = shift;
15239µs my @parsers = (
153 (ref $parsers eq 'HASH' ) ? %$parsers :
154 ( ( ref $parsers eq 'ARRAY' ) ? @$parsers : $parsers)
155 );
156312µs33.63ms $parser->create_parser( \@common, @parsers );
# spent 3.63ms making 3 calls to DateTime::Format::Builder::Parser::create_parser, avg 1.21ms/call
157 }
158 else
159 {
160 $parser->create_parser( \@common, @_ );
161 }
162}
163
164=pod
165
- -
171sub create_end_parser
172
# spent 3.78ms (89µs+3.69) within DateTime::Format::Builder::create_end_parser which was called 3 times, avg 1.26ms/call: # 3 times (89µs+3.69ms) by DateTime::Format::Builder::create_class at line 104, avg 1.26ms/call
{
17334µs my ($class, $parsers) = @_;
174324µs63.69ms $class->create_method( $class->create_parser( $parsers ) );
# spent 3.67ms making 3 calls to DateTime::Format::Builder::create_parser, avg 1.22ms/call # spent 18µs making 3 calls to DateTime::Format::Builder::create_method, avg 6µs/call
175}
176
177=pod
178
- -
184sub create_method
185
# spent 18µs within DateTime::Format::Builder::create_method which was called 3 times, avg 6µs/call: # 3 times (18µs+0s) by DateTime::Format::Builder::create_end_parser at line 174, avg 6µs/call
{
18633µs my ($class, $parser) = @_;
187 return sub {
188 my $self = shift;
189 $parser->parse( $self, @_);
190 }
191319µs}
192
193=pod
194
- -
200sub on_fail
201{
202 my ($class, $input) = @_;
203
204 my $pkg;
205 my $i = 0;
206 while (($pkg) = caller($i++)) {
207 last if (!UNIVERSAL::isa($pkg, 'DateTime::Format::Builder') &&
208 !UNIVERSAL::isa($pkg, 'DateTime::Format::Builder::Parser'));
209 }
210 local $Carp::CarpLevel = $i;
211 croak "Invalid date format: $input";
212}
213
214#
215# User oriented methods
216#
217
218=pod
219
- -
225sub new
226{
227 my $class = shift;
228 croak "Constructor 'new' takes no parameters" if @_;
229 my $self = bless {
230 parser => sub { croak "No parser set." }
231 }, ref($class)||$class;
232 if (ref $class)
233 {
234 # If called on an object, clone
235 $self->set_parser( $class->get_parser );
236 # and that's it. we don't store that much info per object
237 }
238 return $self;
239}
240
241sub parser
242{
243 my $class = shift;
244 my $parser = $class->create_end_parser( \@_ );
245
246 # Do we need to instantiate a new object for return,
247 # or are we modifying an existing object?
248 my $self;
249 $self = ref $class ? $class : $class->new();
250
251 $self->set_parser( $parser );
252
253 $self;
254}
255
256sub clone
257{
258 my $self = shift;
259 croak "Calling object method as class method!" unless ref $self;
260 return $self->new();
261}
262
263sub set_parser
264{
265 my ($self, $parser) = @_;
266 croak "set_parser given something other than a coderef" unless $parser
267 and ref $parser eq 'CODE';
268 $self->{parser} = $parser;
269 $self;
270}
271
272sub get_parser
273{
274 my ($self) = @_;
275 return $self->{parser};
276}
277
278sub parse_datetime
279{
280 my $self = shift;
281 croak "parse_datetime is an object method, not a class method."
282 unless ref $self and $self->isa( __PACKAGE__ );
283 croak "No date specified." unless @_;
284 return $self->{parser}->( $self, @_ );
285}
286
287sub format_datetime
288{
289 croak __PACKAGE__."::format_datetime not implemented.";
290}
291
292192µsrequire DateTime::Format::Builder::Parser;
293
294
295=pod
296
- -
301110µs1;