NAME
Parse::CPAN::Packages::Fast - parse CPAN's package index
SYNOPSIS
use Parse::CPAN::Packages::Fast;
my $p = Parse::CPAN::Packages::Fast->new;
## or alternatively, if CPAN.pm is not configured:
# my $p = Parse::CPAN::Packages::Fast->new("/path/to/02packages.details.txt.gz");
my $m = $p->package("Kwalify");
# $m is a Parse::CPAN::Packages::Fast::Package object
print $m->package, "\n"; # Kwalify
print $m->version, "\n"; # 1.21
my $d = $m->distribution;
# $d is a Parse::CPAN::Packages::Fast::Distribution object
print $d->dist, "\n"; # Kwalify
print $d->version, "\n"; # 1.21
DESCRIPTION
This is a largely API compatible rewrite of Parse::CPAN::Packages.
Notable differences are
The methods contains and add_package of Parse::CPAN::Packages::Fast::Distribution are not implemented
Parse::CPAN::Packages::Fast::Distribution is really a CPAN::DistnameInfo (but this one is compatible with Parse::CPAN::Packages::Distribution>
WHY?
Calling Parse::CPAN::Packages
' constructor is quite slow and takes about 10 seconds on my machine. In contrast, the reimplementation just takes a second.
I did some benchmarking of the original module and found no obvious weak point to speed it up. Moose is used here, but does not seem to cause the problem. I suspect that the real problem is just heavy use of method calls.