← Index
Performance Profile   « block view • line view • sub view »
For t/test-parsing
  Run on Sun Nov 14 09:49:57 2010
Reported on Sun Nov 14 09:50:06 2010

File /home/tamil/util/marc-moose/lib/MARC/Moose/Parser/Marcxml.pm
Statements Executed 290017
Total Time 0.362805800000671 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
100011322ms858msMARC::Moose::Parser::Marcxml::::__ANON__[:62]MARC::Moose::Parser::Marcxml::__ANON__[:62]
0000s0sMARC::Moose::Parser::Marcxml::::BEGINMARC::Moose::Parser::Marcxml::BEGIN
LineStmts.Exclusive
Time
Avg.Code
1package MARC::Moose::Parser::Marcxml;
2# ABSTRACT: Parser for MARXML records
3
4330µs10µsuse namespace::autoclean;
# spent 70µs making 1 call to namespace::autoclean::import
5364µs21µsuse Moose;
6
718µs8µsextends 'MARC::Moose::Parser';
# spent 12.5ms making 1 call to Moose::extends
8
93139µs46µsuse MARC::Moose::Field::Control;
# spent 4µs making 1 call to import
103585µs195µsuse MARC::Moose::Field::Std;
# spent 4µs making 1 call to import
11
12
13
# spent 858ms (322+536) within MARC::Moose::Parser::Marcxml::__ANON__[/home/tamil/util/marc-moose/lib/MARC/Moose/Parser/Marcxml.pm:62] which was called 1000 times, avg 858µs/call: # 1000 times (322ms+536ms) by Moose::Meta::Method::Overridden::new or Moose::Meta::Method::Overridden::__ANON__[/usr/local/lib/perl/5.10.0/Moose/Meta/Method/Overridden.pm:37] at line 36 of /usr/local/lib/perl/5.10.0/Moose/Meta/Method/Overridden.pm, avg 858µs/call
override 'parse' => sub {
14290000362ms1µs my ($self, $raw) = @_;
15
16 return unless $raw;
17 return undef unless $raw =~ /<record/;
18
19 my @parts = split />/, $raw;
20 my ($tag, $code, $ind1, $ind2);
21 my $record = MARC::Moose::Record->new();
# spent 32.0ms making 1000 calls to MARC::Moose::Record::new, avg 32µs/call
22 my @fields;
23 while ( @parts ) {
24 $_ = shift @parts;
25 $_ = shift @parts if /<record/;
26 if ( /<leader/ ) {
27 $_ = shift @parts;
28 /(.*)<\/leader/;
29 $record->_leader($1);
# spent 10.7ms making 1000 calls to MARC::Moose::Record::_leader, avg 11µs/call
30 next;
31 }
32 if ( /<controlfield\s*tag="(.*)"/ ) {
33 my $tag = $1;
34 $_ = shift @parts;
35 s/<\/controlfield//;
36 push @fields, MARC::Moose::Field::Control->new( tag => $tag, value => $_ );
# spent 89.4ms making 4000 calls to MARC::Moose::Field::Control::new, avg 22µs/call
37 next;
38 }
39 if ( /<datafield\s*tag="(.*?)"\s*ind1="(.*?)"\s*ind2="(.*)"/ ) {
40 my ($tag, $ind1, $ind2) = ($1, $2, $3);
41 my @subf;
42 while ( @parts && $parts[0] =~ /<subfield.*code="(.*)"/ ) {
43 my $letter = $1;
44 shift @parts;
45 $_ = shift @parts;
46 s/<\/subfield//;
47 push @subf, [ $letter => $_ ];
48 }
49 push @fields, MARC::Moose::Field::Std->new(
# spent 394ms making 11000 calls to MARC::Moose::Field::Std::new, avg 36µs/call
50 tag => $tag,
51 ind1 => $ind1,
52 ind2 => $ind2,
53 subf => \@subf );
54 shift @parts;
55 next;
56 }
57 last;
58 }
59 $record->fields( \@fields );
# spent 9.75ms making 1000 calls to MARC::Moose::Record::fields, avg 10µs/call
60
61 return $record;
62120µs20µs};
# spent 752µs making 1 call to Moose::override
63
64116µs16µs__PACKAGE__->meta->make_immutable;
# spent 3.54ms making 1 call to Class::MOP::Class::make_immutable # spent 26µs making 1 call to MARC::Moose::Parser::Marcxml::meta
65
66123µs23µs1;
67
68=head1 SEE ALSO
69=for :list
70* L<MARC::Moose>
71112µs12µs* L<MARC::Moose::Parser>