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 | __ANON__[:62] | MARC::Moose::Parser::Marcxml::
0 | 0 | 0 | 0s | 0s | BEGIN | MARC::Moose::Parser::Marcxml::
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> |