Parse::CPAN::Packages::Fast is about an order of magnitude faster and uses only 40% as much memory. Neither, however, offer a way to iterate through the list without first creating the entire list in memory.
This module allows one to easily parse the 02packages.details.txt.gz file for CPAN archives.
The major downside is that it has to initialize itself completely, which can take a while even on a fast machine (and will probably take longer as CPAN grows).
A couple of features such as determining what distribution a module is in required reading the source code since the documentation consists only of a synopsis, which leaves out a few things.