| File | /home/tamil/util/marc-moose/lib/MARC/Moose/Parser/Marcxml.pm |
| Statements Executed | 290017 |
| Total Time | 0.362805799999995 seconds |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1000 | 1 | 1 | 322ms | 858ms | MARC::Moose::Parser::Marcxml::__ANON__[:62] |
| 0 | 0 | 0 | 0s | 0s | MARC::Moose::Parser::Marcxml::BEGIN |
| Line | Stmts. | Exclusive Time | Avg. | Code |
|---|---|---|---|---|
| 1 | package MARC::Moose::Parser::Marcxml; | |||
| 2 | # ABSTRACT: Parser for MARXML records | |||
| 3 | ||||
| 4 | 3 | 30µs | 10µs | use namespace::autoclean; # spent 70µs making 1 call to namespace::autoclean::import |
| 5 | 3 | 64µs | 21µs | use Moose; # spent 5.90ms making 1 call to Moose::Exporter::__ANON__[/usr/local/lib/perl/5.10.0/Moose/Exporter.pm:425] |
| 6 | ||||
| 7 | 1 | 8µs | 8µs | extends 'MARC::Moose::Parser'; # spent 12.5ms making 1 call to Moose::extends |
| 8 | ||||
| 9 | 3 | 139µs | 46µs | use MARC::Moose::Field::Control; # spent 4µs making 1 call to import |
| 10 | 3 | 585µs | 195µs | use 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 | |||
| 14 | 1000 | 1.96ms | 2µs | my ($self, $raw) = @_; |
| 15 | ||||
| 16 | 1000 | 228µs | 228ns | return unless $raw; |
| 17 | 1000 | 843µs | 843ns | return undef unless $raw =~ /<record/; |
| 18 | ||||
| 19 | 1000 | 37.7ms | 38µs | my @parts = split />/, $raw; |
| 20 | 1000 | 451µs | 451ns | my ($tag, $code, $ind1, $ind2); |
| 21 | 1000 | 3.51ms | 4µs | my $record = MARC::Moose::Record->new(); # spent 32.0ms making 1000 calls to MARC::Moose::Record::new, avg 32µs/call |
| 22 | 1000 | 235µs | 235ns | my @fields; |
| 23 | 1000 | 6.37ms | 6µs | while ( @parts ) { |
| 24 | 17000 | 8.65ms | 509ns | $_ = shift @parts; |
| 25 | 17000 | 10.0ms | 589ns | $_ = shift @parts if /<record/; |
| 26 | 17000 | 5.69ms | 334ns | if ( /<leader/ ) { |
| 27 | 1000 | 432µs | 432ns | $_ = shift @parts; |
| 28 | 1000 | 1.67ms | 2µs | /(.*)<\/leader/; |
| 29 | 1000 | 3.46ms | 3µs | $record->_leader($1); # spent 10.7ms making 1000 calls to MARC::Moose::Record::_leader, avg 11µs/call |
| 30 | 1000 | 430µs | 430ns | next; |
| 31 | } | |||
| 32 | 16000 | 12.1ms | 754ns | if ( /<controlfield\s*tag="(.*)"/ ) { |
| 33 | 4000 | 3.57ms | 893ns | my $tag = $1; |
| 34 | 4000 | 2.03ms | 507ns | $_ = shift @parts; |
| 35 | 4000 | 4.18ms | 1µs | s/<\/controlfield//; |
| 36 | 4000 | 16.3ms | 4µ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 |
| 37 | 4000 | 1.33ms | 331ns | next; |
| 38 | } | |||
| 39 | 12000 | 28.6ms | 2µs | if ( /<datafield\s*tag="(.*?)"\s*ind1="(.*?)"\s*ind2="(.*)"/ ) { |
| 40 | 11000 | 18.1ms | 2µs | my ($tag, $ind1, $ind2) = ($1, $2, $3); |
| 41 | 11000 | 2.43ms | 221ns | my @subf; |
| 42 | 11000 | 22.4ms | 2µs | while ( @parts && $parts[0] =~ /<subfield.*code="(.*)"/ ) { |
| 43 | 22000 | 14.0ms | 638ns | my $letter = $1; |
| 44 | 22000 | 8.56ms | 389ns | shift @parts; |
| 45 | 22000 | 9.18ms | 417ns | $_ = shift @parts; |
| 46 | 22000 | 21.0ms | 954ns | s/<\/subfield//; |
| 47 | 22000 | 51.2ms | 2µs | push @subf, [ $letter => $_ ]; |
| 48 | } | |||
| 49 | 11000 | 49.2ms | 4µ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 ); | |||
| 54 | 11000 | 4.04ms | 368ns | shift @parts; |
| 55 | 11000 | 6.45ms | 587ns | next; |
| 56 | } | |||
| 57 | 1000 | 384µs | 384ns | last; |
| 58 | } | |||
| 59 | 1000 | 3.67ms | 4µs | $record->fields( \@fields ); # spent 9.75ms making 1000 calls to MARC::Moose::Record::fields, avg 10µs/call |
| 60 | ||||
| 61 | 1000 | 1.56ms | 2µs | return $record; |
| 62 | 1 | 20µs | 20µs | }; # spent 752µs making 1 call to Moose::override |
| 63 | ||||
| 64 | 1 | 16µs | 16µ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 | ||||
| 66 | 1 | 23µs | 23µs | 1; |
| 67 | ||||
| 68 | =head1 SEE ALSO | |||
| 69 | =for :list | |||
| 70 | * L<MARC::Moose> | |||
| 71 | 1 | 12µs | 12µs | * L<MARC::Moose::Parser> |