File | /home/tamil/util/marc-moose/t/test-parsing |
Statements Executed | 33 |
Total Time | 0.0468959999999996 seconds |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 61.0ms | 964ms | parse_with_marc_moose | main::
0 | 0 | 0 | 0s | 0s | BEGIN | main::
0 | 0 | 0 | 0s | 0s | parse_with_marc | main::
0 | 0 | 0 | 0s | 0s | parse_with_marc_moose_sax | main::
Line | Stmts. | Exclusive Time | Avg. | Code |
---|---|---|---|---|
1 | #!/usr/bin/perl | |||
2 | ||||
3 | 3 | 2.25ms | 749µs | use warnings; # spent 43µs making 1 call to warnings::import |
4 | 3 | 387µs | 129µs | use strict; # spent 9µs making 1 call to strict::import |
5 | 3 | 114µs | 38µs | use YAML; # spent 51µs making 1 call to Exporter::import |
6 | 3 | 135µs | 45µs | use MARC::Moose::Record; # spent 5µs making 1 call to import |
7 | 3 | 156µs | 52µs | use MARC::Moose::Parser::Marcxml; # spent 5µs making 1 call to import |
8 | 3 | 145µs | 48µs | use MARC::Moose::Parser::MarcxmlSax; # spent 5µs making 1 call to import |
9 | 3 | 179µs | 60µs | use MARC::File::XML; # spent 119µs making 1 call to MARC::File::XML::import |
10 | ||||
11 | 3 | 2.18ms | 725µs | use Time::HiRes qw(gettimeofday); # spent 215µs making 1 call to Time::HiRes::import |
12 | ||||
13 | ||||
14 | 1 | 5µs | 5µs | my $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> | |||
66 | EOS | |||
67 | ||||
68 | ||||
69 | # Number of time the above record is parsed | |||
70 | 1 | 600ns | 600ns | my $max = 1000; |
71 | ||||
72 | # Tested SAX parsers | |||
73 | 1 | 3µs | 3µs | my @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 | |||
81 | 1 | 12µs | 12µs | my $parser = MARC::Moose::Parser::Marcxml->new(); # spent 38µs making 1 call to MARC::Moose::Parser::Marcxml::new |
82 | 1 | 24µs | 24µs | my $start = gettimeofday; # spent 22µs making 1 call to Time::HiRes::gettimeofday |
83 | 1 | 41.2ms | 41.2ms | 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 | 1 | 600ns | 600ns | } |
86 | 1 | 59µs | 59µs | 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 | ||||
91 | sub 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 | ||||
105 | sub 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 | ||||
120 | 1 | 17µs | 17µs | parse_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 |