The minicpan tool in CPAN::Mini lets you keep a copy of the most recent revisions of each module on the CPAN. Having a mini-CPAN is a great tool for anyone with a laptop, or who wants to look at the CPAN as a whole, or who wants to create a mini-mirror of CPAN to support a large installation without having to hit the net for each module install. An entire mini-CPAN only takes up about a gigabyte of drive space.
Ricardo Signes, CPAN::Mini’s author, wrote to tell me:
CPAN::Mini 0.569 includes an obvious optimization: instead of
reconnecting to your remote mirror for every file that might need updating,
`minicpan` will now keep one HTTP connection open for the entire update. While
I can’t give numbers that reflect the most common cases of usage, a run that
checks every file and finds no updates goes, on my laptop, from about two
minutes to about twenty seconds — about 1/6 the time! It also puts less load on the remote server, making it a friendlier way to keep a local mirror.
By shifting expansion to a one-shot extraction to a temp file, and then opening tarballs once from the temp file, I managed to get a two to three times speed up for file extraction. Combined with CPAN::Mini pipelining, this makes CPAN::Mini::Extract massively faster (a 200%-300% overall speed up).