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