← 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 11:58:52 2013
Reported on Tue Oct 15 12:01:05 2013

Filename/usr/share/perl5/MARC/File/XML.pm
StatementsExecuted 24689 statements in 82.9ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
42637134.8ms43.4msMARC::File::XML::::escapeMARC::File::XML::escape
251133.9ms102msMARC::File::XML::::recordMARC::File::XML::record
4107116.83ms6.83msMARC::File::XML::::CORE:substMARC::File::XML::CORE:subst (opcode)
25112.44ms476msMARC::File::XML::::decodeMARC::File::XML::decode
4107111.78ms1.78msMARC::File::XML::::CORE:regcompMARC::File::XML::CORE:regcomp (opcode)
25111.53ms104msMARC::File::XML::::encodeMARC::File::XML::encode
111738µs19.4msMARC::File::XML::::BEGIN@9MARC::File::XML::BEGIN@9
2511379µs551µsMARC::File::XML::::decideMARC8BinaryMARC::File::XML::decideMARC8Binary
2511362µs477msMARC::Record::::new_from_xml MARC::Record::new_from_xml
12551335µs335µsMARC::File::XML::::CORE:matchMARC::File::XML::CORE:match (opcode)
2511268µs104msMARC::Record::::as_xml MARC::Record::as_xml
2511259µs259µsMARC::File::XML::::headerMARC::File::XML::header
2511201µs201µsMARC::File::XML::::default_record_formatMARC::File::XML::default_record_format
2511114µs114µsMARC::File::XML::::footerMARC::File::XML::footer
11122µs45µsMARC::File::XML::::BEGIN@3MARC::File::XML::BEGIN@3
61120µs20µsMARC::File::XML::::CORE:substcontMARC::File::XML::CORE:substcont (opcode)
11118µs210µsMARC::File::XML::::BEGIN@13MARC::File::XML::BEGIN@13
11116µs139µsMARC::File::XML::::BEGIN@6MARC::File::XML::BEGIN@6
11114µs18µsMARC::File::XML::::BEGIN@4MARC::File::XML::BEGIN@4
11113µs94µsMARC::File::XML::::BEGIN@10MARC::File::XML::BEGIN@10
11112µs41µsMARC::File::XML::::BEGIN@7MARC::File::XML::BEGIN@7
11112µs68µsMARC::File::XML::::BEGIN@14MARC::File::XML::BEGIN@14
11111µs57µsMARC::File::XML::::BEGIN@5MARC::File::XML::BEGIN@5
11111µs74µsMARC::File::XML::::BEGIN@12MARC::File::XML::BEGIN@12
1118µs8µsMARC::File::XML::::CORE:qrMARC::File::XML::CORE:qr (opcode)
1116µs6µsMARC::File::XML::::importMARC::File::XML::import
1116µs6µsMARC::File::XML::::BEGIN@8MARC::File::XML::BEGIN@8
1116µs6µsMARC::File::XML::::BEGIN@15MARC::File::XML::BEGIN@15
0000s0sMARC::File::XML::::DESTROYMARC::File::XML::DESTROY
0000s0sMARC::File::XML::::_nextMARC::File::XML::_next
0000s0sMARC::File::XML::::_unimarc_encodingMARC::File::XML::_unimarc_encoding
0000s0sMARC::File::XML::::closeMARC::File::XML::close
0000s0sMARC::File::XML::::outMARC::File::XML::out
0000s0sMARC::File::XML::::writeMARC::File::XML::write
0000s0sMARC::Record::::as_xml_record MARC::Record::as_xml_record
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package MARC::File::XML;
2
3337µs268µs
# spent 45µs (22+23) within MARC::File::XML::BEGIN@3 which was called: # once (22µs+23µs) by C4::Biblio::BEGIN@29 at line 3
use warnings;
# spent 45µs making 1 call to MARC::File::XML::BEGIN@3 # spent 23µs making 1 call to warnings::import
4339µs222µs
# spent 18µs (14+4) within MARC::File::XML::BEGIN@4 which was called: # once (14µs+4µs) by C4::Biblio::BEGIN@29 at line 4
use strict;
# spent 18µs making 1 call to MARC::File::XML::BEGIN@4 # spent 4µs making 1 call to strict::import
5333µs2104µs
# spent 57µs (11+46) within MARC::File::XML::BEGIN@5 which was called: # once (11µs+46µs) by C4::Biblio::BEGIN@29 at line 5
use vars qw( $VERSION %_load_args );
# spent 57µs making 1 call to MARC::File::XML::BEGIN@5 # spent 46µs making 1 call to vars::import
6339µs2262µs
# spent 139µs (16+123) within MARC::File::XML::BEGIN@6 which was called: # once (16µs+123µs) by C4::Biblio::BEGIN@29 at line 6
use base qw( MARC::File );
# spent 139µs making 1 call to MARC::File::XML::BEGIN@6 # spent 123µs making 1 call to base::import
7329µs270µs
# spent 41µs (12+29) within MARC::File::XML::BEGIN@7 which was called: # once (12µs+29µs) by C4::Biblio::BEGIN@29 at line 7
use MARC::Record;
# spent 41µs making 1 call to MARC::File::XML::BEGIN@7 # spent 29µs making 1 call to Exporter::import
8324µs16µs
# spent 6µs within MARC::File::XML::BEGIN@8 which was called: # once (6µs+0s) by C4::Biblio::BEGIN@29 at line 8
use MARC::Field;
# spent 6µs making 1 call to MARC::File::XML::BEGIN@8
93141µs119.4ms
# spent 19.4ms (738µs+18.7) within MARC::File::XML::BEGIN@9 which was called: # once (738µs+18.7ms) by C4::Biblio::BEGIN@29 at line 9
use MARC::File::SAX;
# spent 19.4ms making 1 call to MARC::File::XML::BEGIN@9
10339µs2175µs
# spent 94µs (13+81) within MARC::File::XML::BEGIN@10 which was called: # once (13µs+81µs) by C4::Biblio::BEGIN@29 at line 10
use XML::SAX qw(Namespaces Validation);
# spent 94µs making 1 call to MARC::File::XML::BEGIN@10 # spent 81µs making 1 call to Exporter::import
11
12333µs2137µs
# spent 74µs (11+63) within MARC::File::XML::BEGIN@12 which was called: # once (11µs+63µs) by C4::Biblio::BEGIN@29 at line 12
use MARC::Charset qw( marc8_to_utf8 utf8_to_marc8 );
# spent 74µs making 1 call to MARC::File::XML::BEGIN@12 # spent 63µs making 1 call to Exporter::import
13340µs2401µs
# spent 210µs (18+192) within MARC::File::XML::BEGIN@13 which was called: # once (18µs+192µs) by C4::Biblio::BEGIN@29 at line 13
use IO::File;
# spent 210µs making 1 call to MARC::File::XML::BEGIN@13 # spent 192µs making 1 call to Exporter::import
14334µs2124µs
# spent 68µs (12+56) within MARC::File::XML::BEGIN@14 which was called: # once (12µs+56µs) by C4::Biblio::BEGIN@29 at line 14
use Carp qw( croak );
# spent 68µs making 1 call to MARC::File::XML::BEGIN@14 # spent 56µs making 1 call to Exporter::import
1531.88ms16µs
# spent 6µs within MARC::File::XML::BEGIN@15 which was called: # once (6µs+0s) by C4::Biblio::BEGIN@29 at line 15
use Encode ();
# spent 6µs making 1 call to MARC::File::XML::BEGIN@15
16
171800ns$VERSION = '0.92';
18
19111µs131µsmy $factory = XML::SAX::ParserFactory->new();
# spent 31µs making 1 call to XML::SAX::ParserFactory::new
2013µs16µs$factory->require_feature(Namespaces);
# spent 6µs making 1 call to XML::SAX::ParserFactory::require_feature
21
22
# spent 6µs within MARC::File::XML::import which was called: # once (6µs+0s) by C4::Biblio::BEGIN@29 at line 29 of /usr/share/koha/lib/C4/Biblio.pm
sub import {
2348µs my $class = shift;
24 %_load_args = @_;
25 $_load_args{ DefaultEncoding } ||= 'UTF-8';
26 $_load_args{ RecordFormat } ||= 'USMARC';
27}
28
29=head1 NAME
30
- -
101
# spent 201µs within MARC::File::XML::default_record_format which was called 25 times, avg 8µs/call: # 25 times (201µs+0s) by C4::Biblio::GetMarcBiblio at line 1259 of /usr/share/koha/lib/C4/Biblio.pm, avg 8µs/call
sub default_record_format {
102100231µs my $self = shift;
103 my $format = shift;
104
105 $_load_args{RecordFormat} = $format if ($format);
106
107 return $_load_args{RecordFormat};
108}
109
110
111=head2 as_xml()
112
- -
121
# spent 104ms (268µs+104) within MARC::Record::as_xml which was called 25 times, avg 4.17ms/call: # 25 times (268µs+104ms) by C4::XSLT::XSLTParse4Display at line 200 of /usr/share/koha/lib/C4/XSLT.pm, avg 4.17ms/call
sub MARC::Record::as_xml {
12275277µs my $record = shift;
123 my $format = shift || $_load_args{RecordFormat};
12425104ms return( MARC::File::XML::encode( $record, $format ) );
# spent 104ms making 25 calls to MARC::File::XML::encode, avg 4.16ms/call
125}
126
127=head2 as_xml_record([$format])
128
- -
137sub MARC::Record::as_xml_record {
138 my $record = shift;
139 my $format = shift || $_load_args{RecordFormat};
140 return( MARC::File::XML::encode( $record, $format, 1 ) );
141}
142
143=head2 new_from_xml([$encoding, $format])
144
- -
157
# spent 477ms (362µs+476) within MARC::Record::new_from_xml which was called 25 times, avg 19.1ms/call: # 25 times (362µs+476ms) by C4::Biblio::GetMarcBiblio at line 1263 of /usr/share/koha/lib/C4/Biblio.pm, avg 19.1ms/call
sub MARC::Record::new_from_xml {
158125365µs my $xml = shift;
159 ## to allow calling as MARC::Record::new_from_xml()
160 ## or MARC::Record->new_from_xml()
161 $xml = shift if ( ref($xml) || ($xml eq "MARC::Record") );
162
163 my $enc = shift || $_load_args{BinaryEncoding};
164 my $format = shift || $_load_args{RecordFormat};
16525476ms return( MARC::File::XML::decode( $xml, $enc, $format ) );
# spent 476ms making 25 calls to MARC::File::XML::decode, avg 19.1ms/call
166}
167
168=pod
169
- -
184sub out {
185 my ( $class, $filename, $enc ) = @_;
186 my $fh = IO::File->new( ">$filename" ) or croak( $! );
187 $enc ||= $_load_args{DefaultEncoding};
188
189 if ($enc =~ /^utf-?8$/oi) {
190 $fh->binmode(':utf8');
191 } else {
192 $fh->binmode(':raw');
193 }
194
195 my %self = (
196 filename => $filename,
197 fh => $fh,
198 header => 0,
199 encoding => $enc
200 );
201 return( bless \%self, ref( $class ) || $class );
202}
203
204=head2 write()
205
- -
214sub write {
215 my ( $self, $record, $enc ) = @_;
216 if ( ! $self->{ fh } ) {
217 croak( "MARC::File::XML object not open for writing" );
218 }
219 if ( ! $record ) {
220 croak( "must pass write() a MARC::Record object" );
221 }
222 ## print the XML header if we haven't already
223 if ( ! $self->{ header } ) {
224 $enc ||= $self->{ encoding } || $_load_args{DefaultEncoding};
225 $self->{ fh }->print( header( $enc ) );
226 $self->{ header } = 1;
227 }
228 ## print out the record
229 $self->{ fh }->print( record( $record ) ) || croak( $! );
230 return( 1 );
231}
232
233=head2 close()
234
- -
241sub close {
242 my $self = shift;
243 if ( $self->{ fh } ) {
244 $self->{ fh }->print( footer() ) if $self->{ header };
245 $self->{ fh } = undef;
246 $self->{ filename } = undef;
247 $self->{ header } = undef;
248 }
249 return( 1 );
250}
251
252## makes sure that the XML file is closed off
253
254sub DESTROY {
255 shift->close();
256}
257
258=pod
259
- -
278
# spent 259µs within MARC::File::XML::header which was called 25 times, avg 10µs/call: # 25 times (259µs+0s) by MARC::File::XML::encode at line 480, avg 10µs/call
sub header {
279100274µs my $enc = shift;
280 $enc = shift if ( $enc && (ref($enc) || ($enc eq "MARC::File::XML")) );
281 $enc ||= 'UTF-8';
282 return( <<MARC_XML_HEADER );
283<?xml version="1.0" encoding="$enc"?>
284<collection
285 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
286 xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
287 xmlns="http://www.loc.gov/MARC21/slim">
288MARC_XML_HEADER
289}
290
291=head2 footer()
292
- -
297
# spent 114µs within MARC::File::XML::footer which was called 25 times, avg 5µs/call: # 25 times (114µs+0s) by MARC::File::XML::encode at line 486, avg 5µs/call
sub footer {
29825137µs return( "</collection>" );
299}
300
301=head2 record()
302
- -
307
# spent 102ms (33.9+68.3) within MARC::File::XML::record which was called 25 times, avg 4.09ms/call: # 25 times (33.9ms+68.3ms) by MARC::File::XML::encode at line 485, avg 4.09ms/call
sub record {
308677528.2ms my $record = shift;
309 my $format = shift;
310 my $include_full_record_header = shift;
311 my $enc = shift;
312
313 $format ||= $_load_args{RecordFormat};
314
315 my $_transcode = 0;
31625208µs my $ldr = $record->leader;
# spent 208µs making 25 calls to MARC::Record::leader, avg 8µs/call
317 my $original_encoding = substr($ldr,9,1);
318
319 # Does the record think it is already Unicode?
320 if ($original_encoding ne 'a' && lc($format) !~ /^unimarc/o) {
321 # If not, we'll make it so
322 $_transcode++;
323 substr($ldr,9,1,'a');
324 $record->leader( $ldr );
325 }
326
327 my @xml = ();
328
329 if ($include_full_record_header) {
330 push @xml, <<HEADER
331<?xml version="1.0" encoding="$enc"?>
332<record
333 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
334 xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
335 xmlns="http://www.loc.gov/MARC21/slim">
336HEADER
337
338 } else {
339 push( @xml, "<record>" );
340 }
341
34250725µs push( @xml, " <leader>" . escape( $record->leader ) . "</leader>" );
# spent 610µs making 25 calls to MARC::File::XML::escape, avg 24µs/call # spent 114µs making 25 calls to MARC::Record::leader, avg 5µs/call
343
34425285µs foreach my $field ( $record->fields() ) {
# spent 285µs making 25 calls to MARC::Record::fields, avg 11µs/call
34510887.68ms my ($tag) = escape( $field->tag() );
# spent 5.43ms making 544 calls to MARC::File::XML::escape, avg 10µs/call # spent 2.25ms making 544 calls to MARC::Field::tag, avg 4µs/call
3465441.80ms if ( $field->is_control_field() ) {
# spent 1.80ms making 544 calls to MARC::Field::is_control_field, avg 3µs/call
34732413µs my $data = $field->data;
# spent 413µs making 32 calls to MARC::Field::data, avg 13µs/call
34832325µs push( @xml, qq( <controlfield tag="$tag">) .
# spent 325µs making 32 calls to MARC::File::XML::escape, avg 10µs/call
349 escape( ($_transcode ? marc8_to_utf8($data) : $data) ). qq(</controlfield>) );
350 } else {
35110249.90ms my ($i1) = escape( $field->indicator( 1 ) );
# spent 5.06ms making 512 calls to MARC::Field::indicator, avg 10µs/call # spent 4.84ms making 512 calls to MARC::File::XML::escape, avg 9µs/call
35210249.39ms my ($i2) = escape( $field->indicator( 2 ) );
# spent 4.79ms making 512 calls to MARC::File::XML::escape, avg 9µs/call # spent 4.60ms making 512 calls to MARC::Field::indicator, avg 9µs/call
353 push( @xml, qq( <datafield tag="$tag" ind1="$i1" ind2="$i2">) );
35451210.2ms foreach my $subfield ( $field->subfields() ) {
# spent 10.2ms making 512 calls to MARC::Field::subfields, avg 20µs/call
355131913.6ms my ( $code, $data ) = ( escape( $$subfield[0] ), $$subfield[1] );
# spent 13.6ms making 1319 calls to MARC::File::XML::escape, avg 10µs/call
356131913.8ms push( @xml, qq( <subfield code="$code">).
# spent 13.8ms making 1319 calls to MARC::File::XML::escape, avg 10µs/call
357 escape( ($_transcode ? marc8_to_utf8($data) : $data) ).qq(</subfield>) );
358 }
359 push( @xml, " </datafield>" );
360 }
361 }
362 push( @xml, "</record>\n" );
363
364 if ($_transcode) {
365 substr($ldr,9,1,$original_encoding);
366 $record->leader( $ldr );
367 }
368
369 return( join( "\n", @xml ) );
370}
371
37214µsmy %ESCAPES = (
373 '&' => '&amp;',
374 '<' => '&lt;',
375 '>' => '&gt;',
376);
37733µsmy $ESCAPE_REGEX =
378 eval 'qr/' .
379148µs join( '|', map { $_ = "\Q$_\E" } keys %ESCAPES ) .
# spent 20µs executing statements in string eval
380 '/;'
381 ;
382
383
# spent 43.4ms (34.8+8.63) within MARC::File::XML::escape which was called 4263 times, avg 10µs/call: # 1319 times (11.5ms+2.34ms) by MARC::File::XML::record at line 356, avg 10µs/call # 1319 times (10.8ms+2.80ms) by MARC::File::XML::record at line 355, avg 10µs/call # 544 times (4.33ms+1.10ms) by MARC::File::XML::record at line 345, avg 10µs/call # 512 times (3.75ms+1.09ms) by MARC::File::XML::record at line 351, avg 9µs/call # 512 times (3.78ms+1.01ms) by MARC::File::XML::record at line 352, avg 9µs/call # 32 times (247µs+78µs) by MARC::File::XML::record at line 348, avg 10µs/call # 25 times (400µs+210µs) by MARC::File::XML::record at line 342, avg 24µs/call
sub escape {
3841674046.5ms my $string = shift;
385 return '' if ! defined $string or $string eq '';
38682208.63ms $string =~ s/($ESCAPE_REGEX)/$ESCAPES{$1}/oge;
# spent 6.83ms making 4107 calls to MARC::File::XML::CORE:subst, avg 2µs/call # spent 1.78ms making 4107 calls to MARC::File::XML::CORE:regcomp, avg 432ns/call # spent 20µs making 6 calls to MARC::File::XML::CORE:substcont, avg 3µs/call
387 return( $string );
388}
389
390sub _next {
391 my $self = shift;
392 my $fh = $self->{ fh };
393
394 ## return undef at the end of the file
395 return if eof($fh);
396
397 ## get a chunk of xml for a record
398 local $/ = '</record>';
399 my $xml = <$fh>;
400
401 ## trim stuff before the start record element
402 $xml =~ s/.*<record.*?>/<record>/s;
403
404 ## return undef if there isn't a good chunk of xml
405 return if ( $xml !~ m|<record>.*</record>|s );
406
407 ## return the chunk of xml
408 return( $xml );
409}
410
411=head2 decode()
412
- -
420
# spent 476ms (2.44+474) within MARC::File::XML::decode which was called 25 times, avg 19.1ms/call: # 25 times (2.44ms+474ms) by MARC::Record::new_from_xml at line 165, avg 19.1ms/call
sub decode {
4213252.45ms my $text;
422 my $location = '';
423 my $self = shift;
424
425 ## see MARC::File::USMARC::decode for explanation of what's going on
426 ## here
4272534µs if ( ref($self) =~ /^MARC::File/ ) {
# spent 34µs making 25 calls to MARC::File::XML::CORE:match, avg 1µs/call
428 $location = 'in record '.$self->{recnum};
429 $text = shift;
430 } else {
431 $location = 'in record 1';
4322594µs $text = $self=~/MARC::File/ ? shift : $self;
# spent 94µs making 25 calls to MARC::File::XML::CORE:match, avg 4µs/call
433 }
434
435 my $enc = shift || $_load_args{BinaryEncoding};
436 my $format = shift || $_load_args{RecordFormat};
437
43825303µs my $handler = MARC::File::SAX->new();
# spent 303µs making 25 calls to MARC::File::SAX::new, avg 12µs/call
439253.95ms my $parser = $factory->parser(
# spent 3.95ms making 25 calls to XML::SAX::ParserFactory::parser, avg 158µs/call
440 Handler => $handler,
441 ProtocolEncoding => $_load_args{DefaultEncoding}
442 );
44325551µs $parser->{ Handler }{ toMARC8 } = decideMARC8Binary($format,$enc);
# spent 551µs making 25 calls to MARC::File::XML::decideMARC8Binary, avg 22µs/call
444
44525469ms $parser->parse_string( $text );
# spent 469ms making 25 calls to XML::SAX::Base::parse_string, avg 18.8ms/call
446
44725147µs return( $handler->record() );
# spent 147µs making 25 calls to MARC::File::SAX::record, avg 6µs/call
448}
449
450
# spent 551µs (379+172) within MARC::File::XML::decideMARC8Binary which was called 25 times, avg 22µs/call: # 25 times (379µs+172µs) by MARC::File::XML::decode at line 443, avg 22µs/call
sub decideMARC8Binary {
451100553µs my $format = shift;
452 my $enc = shift;
453
4542517µs return 0 if (defined($format) && lc($format) =~ /^unimarc/o);
# spent 17µs making 25 calls to MARC::File::XML::CORE:match, avg 676ns/call
45525155µs return 0 if (defined($enc) && lc($enc) =~ /^utf-?8/o);
# spent 155µs making 25 calls to MARC::File::XML::CORE:match, avg 6µs/call
456 return 1;
457}
458
459
460=head2 encode()
461
- -
469
# spent 104ms (1.53+103) within MARC::File::XML::encode which was called 25 times, avg 4.16ms/call: # 25 times (1.53ms+103ms) by MARC::Record::as_xml at line 124, avg 4.16ms/call
sub encode {
4702751.49ms my $record = shift;
471 my $format = shift || $_load_args{RecordFormat};
472 my $without_collection_header = shift;
473 my $enc = shift || $_load_args{DefaultEncoding};
474
4752535µs if (lc($format) =~ /^unimarc/o) {
# spent 35µs making 25 calls to MARC::File::XML::CORE:match, avg 1µs/call
476 $enc = _unimarc_encoding( $format => $record );
477 }
478
479 my @xml = ();
48025259µs push( @xml, header( $enc ) ) unless ($without_collection_header);
# spent 259µs making 25 calls to MARC::File::XML::header, avg 10µs/call
481 # verbose, but naming the header output flags this way to avoid
482 # the potential confusion identified in CPAN bug #34082
483 # http://rt.cpan.org/Public/Bug/Display.html?id=34082
484 my $include_full_record_header = ($without_collection_header) ? 1 : 0;
48525102ms push( @xml, record( $record, $format, $include_full_record_header, $enc ) );
# spent 102ms making 25 calls to MARC::File::XML::record, avg 4.09ms/call
48625114µs push( @xml, footer() ) unless ($without_collection_header);
# spent 114µs making 25 calls to MARC::File::XML::footer, avg 5µs/call
487
488 return( join( "\n", @xml ) );
489}
490
491sub _unimarc_encoding {
492 my $f = shift;
493 my $r = shift;
494
495 my $pos = 26;
496 $pos = 13 if (lc($f) eq 'unimarcauth');
497
498 my $enc = substr( $r->subfield(100 => 'a'), $pos, 2 );
499
500 if ($enc eq '01' || $enc eq '03') {
501 return 'ISO-8859-1';
502 } elsif ($enc eq '50') {
503 return 'UTF-8';
504 } else {
505 die "Unsupported UNIMARC character encoding [$enc] for XML output for $f; 100\$a -> " . $r->subfield(100 => 'a');
506 }
507}
508
509=head1 TODO
510
- -
54318µs1;
 
# spent 335µs within MARC::File::XML::CORE:match which was called 125 times, avg 3µs/call: # 25 times (155µs+0s) by MARC::File::XML::decideMARC8Binary at line 455, avg 6µs/call # 25 times (94µs+0s) by MARC::File::XML::decode at line 432, avg 4µs/call # 25 times (35µs+0s) by MARC::File::XML::encode at line 475, avg 1µs/call # 25 times (34µs+0s) by MARC::File::XML::decode at line 427, avg 1µs/call # 25 times (17µs+0s) by MARC::File::XML::decideMARC8Binary at line 454, avg 676ns/call
sub MARC::File::XML::CORE:match; # opcode
# spent 8µs within MARC::File::XML::CORE:qr which was called: # once (8µs+0s) by C4::Biblio::BEGIN@29 at line 1 of (eval 961)[MARC/File/XML.pm:379]
sub MARC::File::XML::CORE:qr; # opcode
# spent 1.78ms within MARC::File::XML::CORE:regcomp which was called 4107 times, avg 432ns/call: # 4107 times (1.78ms+0s) by MARC::File::XML::escape at line 386, avg 432ns/call
sub MARC::File::XML::CORE:regcomp; # opcode
# spent 6.83ms within MARC::File::XML::CORE:subst which was called 4107 times, avg 2µs/call: # 4107 times (6.83ms+0s) by MARC::File::XML::escape at line 386, avg 2µs/call
sub MARC::File::XML::CORE:subst; # opcode
# spent 20µs within MARC::File::XML::CORE:substcont which was called 6 times, avg 3µs/call: # 6 times (20µs+0s) by MARC::File::XML::escape at line 386, avg 3µs/call
sub MARC::File::XML::CORE:substcont; # opcode