Skip Menu |

This queue is for tickets about the PAR-Repository CPAN distribution.

Report information
The Basics
Id: 68477
Status: open
Priority: 0/
Queue: PAR-Repository

People
Owner: Nobody in particular
Requestors: MELEZHIK [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: 0.20
Fixed in: (no value)



Subject: suggestion on speed up
Could you speed up PAR::Repository? For about 200 distros/modules (the repo structure is that one distro contain one cpan module) it takes for about 14 secs to get distros list: # time parrepo query distro /./ -r repo > /dev/null real 0m14.220s user 0m13.569s sys 0m0.548s --- # parrepo query distro /./ -r repo | grep '\.par' | wc -l 192
Hi, On Thu May 26 04:41:58 2011, MELEZHIK wrote: Show quoted text
> Could you speed up PAR::Repository? > For about 200 distros/modules (the repo structure is that one distro > contain one cpan module) it takes for about 14 secs to get distros list: > > # time parrepo query distro /./ -r repo > /dev/null > > real 0m14.220s > user 0m13.569s > sys 0m0.548s
That seems particularly slow. I had a PAR::Repository with all almost ActiveState PPMs converted to .par distributions and that's much more. Show quoted text
> # parrepo query distro /./ -r repo | grep '\.par' | wc -l > 192
If I remember correctly, the slowness in PAR::Repository is mostly because of the usage of DBM::Deep, which is a pure-Perl persistent storage. DBM::Deep has never been fast, but it slowed down considerably after I started using it for PAR::Repository because various complex features such as transactions were added. I'm pretty certain that the PAR::Rep. code itself could be sped up a bit, but not (easily) orders of magnitude. I will gladly accept patches, though. One possible avenue would be to offer multiple storage backends. Using SQLite as a faster, optional backend would be possible, but due to the very different API, it won't be easy. I currently have no resources to tackle this. As I said, patches are very welcome and I can also be of limited assistance. A first step might be to run Devel::NYTProf on the thing. Best regards, Steffen