← 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:11 2010

File /home/tamil/util/marc-moose/lib/MARC/Moose/Parser/Marcxml.pm
Statements Executed 290017
Total Time 0.362805799999995 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 {
1410001.96ms2µs my ($self, $raw) = @_;
15
161000228µs228ns return unless $raw;
171000843µs843ns return undef unless $raw =~ /<record/;
18
19100037.7ms38µs my @parts = split />/, $raw;
201000451µs451ns my ($tag, $code, $ind1, $ind2);
2110003.51ms4µs my $record = MARC::Moose::Record->new();
# spent 32.0ms making 1000 calls to MARC::Moose::Record::new, avg 32µs/call
221000235µs235ns my @fields;
2310006.37ms6µs while ( @parts ) {
24170008.65ms509ns $_ = shift @parts;
251700010.0ms589ns $_ = shift @parts if /<record/;
26170005.69ms334ns if ( /<leader/ ) {
271000432µs432ns $_ = shift @parts;
2810001.67ms2µs /(.*)<\/leader/;
2910003.46ms3µs $record->_leader($1);
# spent 10.7ms making 1000 calls to MARC::Moose::Record::_leader, avg 11µs/call
301000430µs430ns next;
31 }
321600012.1ms754ns if ( /<controlfield\s*tag="(.*)"/ ) {
3340003.57ms893ns my $tag = $1;
3440002.03ms507ns $_ = shift @parts;
3540004.18ms1µs s/<\/controlfield//;
36400016.3ms4µs 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
3740001.33ms331ns next;
38 }
391200028.6ms2µs if ( /<datafield\s*tag="(.*?)"\s*ind1="(.*?)"\s*ind2="(.*)"/ ) {
401100018.1ms2µs my ($tag, $ind1, $ind2) = ($1, $2, $3);
41110002.43ms221ns my @subf;
421100022.4ms2µs while ( @parts && $parts[0] =~ /<subfield.*code="(.*)"/ ) {
432200014.0ms638ns my $letter = $1;
44220008.56ms389ns shift @parts;
45220009.18ms417ns $_ = shift @parts;
462200021.0ms954ns s/<\/subfield//;
472200051.2ms2µs push @subf, [ $letter => $_ ];
48 }
491100049.2ms4µs 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 );
54110004.04ms368ns shift @parts;
55110006.45ms587ns next;
56 }
571000384µs384ns last;
58 }
5910003.67ms4µs $record->fields( \@fields );
# spent 9.75ms making 1000 calls to MARC::Moose::Record::fields, avg 10µs/call
60
6110001.56ms2µs 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>