| File | /home/tamil/util/marc-moose/t/test-parsing |
| Statements Executed | 34 |
| Total Time | 0.0468959999999994 seconds |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 61.0ms | 964ms | main::parse_with_marc_moose |
| 0 | 0 | 0 | 0s | 0s | main::BEGIN |
| 0 | 0 | 0 | 0s | 0s | main::parse_with_marc |
| 0 | 0 | 0 | 0s | 0s | main::parse_with_marc_moose_sax |
| 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 | 5 | 5.04ms | 1.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 | |||
| 83 | 1 | 36.3ms | 36.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 | ||||
| 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 |