I should have mentioned that MARC::File::XML uses XML::SAX for XML parsing. XML::SAX can use a variety of backend XML parsers, but I believe by default it will use the XML::SAX::PurePerl parser if it can't find any other ones installed, which is exceptionally slow.
I recommend taking a look at installing XML::SAX::Expat and making sure that XML::SAX is using it. Another option is the parser found in the XML::LibXML package, which is similarly fast, but I've found to be a bit buggy. //Ed