From perldoc XML::Simple:
You can dictate which parser module is used by setting either the envi
+-
ronment variable 'XML_SIMPLE_PREFERRED_PARSER' or the package variable
$XML::Simple::PREFERRED_PARSER to contain the module name.
$XML::Simple::PREFERRED_PARSER = 'XML::LibXML::SAX'; should do the trick.
Update: Results after changing parser (Debian unstable, P4 2.8G, 1G RAM):
#!/usr/bin/perl
use warnings;
use strict;
use XML::Simple qw/XMLin XMLout/;
my $file = shift || die "Must supply xml file";
open FH, '<', $file or die "Cannot open $file for reading: $!";
my $document = do { local $/; <FH> };
$XML::Simple::PREFERRED_PARSER = 'XML::LibXML::SAX';
my $ref = XMLin( $document );
__END__
Output:
8787248
real 0m1.293s
user 0m0.752s
sys 0m0.526s
|