← 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/t/test-parsing
Statements Executed 34
Total Time 0.0468959999999994 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11161.0ms964msmain::::parse_with_marc_moosemain::parse_with_marc_moose
0000s0smain::::BEGINmain::BEGIN
0000s0smain::::parse_with_marcmain::parse_with_marc
0000s0smain::::parse_with_marc_moose_saxmain::parse_with_marc_moose_sax
LineStmts.Exclusive
Time
Avg.Code
1#!/usr/bin/perl
2
332.25ms749µsuse warnings;
# spent 43µs making 1 call to warnings::import
43387µs129µsuse strict;
# spent 9µs making 1 call to strict::import
53114µs38µsuse YAML;
# spent 51µs making 1 call to Exporter::import
63135µs45µsuse MARC::Moose::Record;
# spent 5µs making 1 call to import
73156µs52µsuse MARC::Moose::Parser::Marcxml;
# spent 5µs making 1 call to import
83145µs48µsuse MARC::Moose::Parser::MarcxmlSax;
# spent 5µs making 1 call to import
93179µs60µsuse MARC::File::XML;
# spent 119µs making 1 call to MARC::File::XML::import
10
1132.18ms725µsuse Time::HiRes qw(gettimeofday);
# spent 215µs making 1 call to Time::HiRes::import
12
13
1415µs5µsmy $raw_xml = <<EOS;
15<record>
16 <leader>00675cam a22002051 4500</leader>
17 <controlfield tag="001"> 10026159 </controlfield>
18 <controlfield tag="003">DLC</controlfield>
19 <controlfield tag="005">20050815184409.0</controlfield>
20 <controlfield tag="008">830916s1910 gw 000 0 ger </controlfield>
21 <datafield tag="010" ind1=" " ind2=" ">
22 <subfield code="a"> 10026159 </subfield>
23 </datafield>
24 <datafield tag="035" ind1=" " ind2=" ">
25 <subfield code="a">(OCoLC)9914473</subfield>
26 </datafield>
27 <datafield tag="040" ind1=" " ind2=" ">
28 <subfield code="a">DLC</subfield>
29 <subfield code="c">OCU</subfield>
30 <subfield code="d">OCU</subfield>
31 <subfield code="d">DLC</subfield>
32 </datafield>
33 <datafield tag="042" ind1=" " ind2=" ">
34 <subfield code="a">premarc</subfield>
35 </datafield>
36 <datafield tag="050" ind1="0" ind2="0">
37 <subfield code="a">PA6792.Z9</subfield>
38 <subfield code="b">G4</subfield>
39 </datafield>
40 <datafield tag="100" ind1="1" ind2=" ">
41 <subfield code="a">Germann, Peter.</subfield>
42 </datafield>
43 <datafield tag="245" ind1="1" ind2="4">
44 <subfield code="a">Die sogenannten Sententiae Varronis.</subfield>
45 <subfield code="c">Von Peter Germann.</subfield>
46 </datafield>
47 <datafield tag="260" ind1=" " ind2=" ">
48 <subfield code="a">Paderborn,</subfield>
49 <subfield code="b">F. Schöningh,</subfield>
50 <subfield code="c">1910.</subfield>
51 </datafield>
52 <datafield tag="300" ind1=" " ind2=" ">
53 <subfield code="a">2 p. l., 98 p., 1 l.</subfield>
54 <subfield code="c">24 cm.</subfield>
55 </datafield>
56 <datafield tag="440" ind1=" " ind2="0">
57 <subfield code="a">Studien zur Geschichte und Kultur des Altertums ...</subfield>
58 <subfield code="v">3. Bd., 6. Hft</subfield>
59 </datafield>
60 <datafield tag="600" ind1="1" ind2="0">
61 <subfield code="a">Varro, Marcus Terentius.</subfield>
62 <subfield code="k">Spurious and doubtful works.</subfield>
63 <subfield code="t">Sententiae Varronis.</subfield>
64 </datafield>
65</record>
66EOS
67
68
69# Number of time the above record is parsed
701600ns600nsmy $max = 1000;
71
72# Tested SAX parsers
7313µs3µsmy @xml_parsers = qw(
74 XML::LibXML::SAX::Parser
75 XML::SAX::Expat
76 XML::SAX::ExpatXS
77);
78
79
80
# spent 964ms (61.0+903) within main::parse_with_marc_moose which was called # once (61.0ms+903ms) at line 120
sub parse_with_marc_moose {
8155.04ms1.01ms my $parser = MARC::Moose::Parser::Marcxml->new();
# spent 38µs making 1 call to MARC::Moose::Parser::Marcxml::new
82 my $start = gettimeofday;
# spent 22µs making 1 call to Time::HiRes::gettimeofday
83136.3ms36.3ms for ( my $count = 0; $count < $max; $count++ ) {
# spent 867ms making 1000 calls to MARC::Moose::Parser::Marcxml::parse, avg 867µs/call
84 my $record = $parser->parse( $raw_xml );
85 }
86 print "Parsed $max records from XML using MARC::Moose (pure Perl): ",
# spent 7µs making 1 call to Time::HiRes::gettimeofday
87 gettimeofday - $start, "\n";
88}
89
90
91sub parse_with_marc_moose_sax {
92 for my $sax_parser ( @xml_parsers ) {
93 $XML::SAX::ParserPackage = $sax_parser;
94 my $parser = MARC::Moose::Parser::MarcxmlSax->new();
95 my $start = gettimeofday;
96 for ( my $count = 0; $count < $max; $count++ ) {
97 my $record = $parser->parse( $raw_xml );
98 }
99 print "Parsed $max records from XML using MARC::Moose and ",
100 "$sax_parser : ", gettimeofday - $start, "\n";
101 }
102}
103
104
105sub parse_with_marc {
106 for my $sax_parser ( @xml_parsers ) {
107 $XML::SAX::ParserPackage = $sax_parser;
108 my $count = 0;
109 my $start = gettimeofday;
110 for ( my $count = 0; $count < $max; $count++ ) {
111 my $record = MARC::Record->new_from_xml( $raw_xml );
112 $count++;
113 last if $count == $max;
114 }
115 print "Parsed $max records from XML using MARC and ",
116 "$sax_parser : ", gettimeofday - $start, "\n";
117 }
118}
119
120117µs17µsparse_with_marc_moose();
# spent 964ms making 1 call to main::parse_with_marc_moose
121#parse_with_marc_moose_sax();
122#parse_with_marc();
123