seth vidal wrote:
If you've been watching the commits list you've seen James and I
checking in a various items. Specifically we've been fixing a number of
hurky things.

Some useful comparisons:
yum list available:
 3.1.2: 11.9s
 HEAD: 7.3s

yum search foo:
 3.1.2: 43.4s
 HEAD: 2.7s

yum install zvbi (single package, nothing fancy) (clean packages was run
b/t runs)
 3.1.2: 14.4s
 HEAD: 9.5s


I know this is just measured in seconds but trimming out some of the
class creation and streamlining the sqlite selects has helped. I'm
curious about other places where we can trim out some more time. Where
are we seeing hangs and delays the most?

Hi!

Having a look at the new depsolver there is still a lot room for improvement (Yes, I am aware that optimizing the depsolver has been postponed until it works correctly). Among some very obvious stuff that can be done with standard techniques like dynamic programming I found something more complicated:

_checkRemove() treats files as provides. This is correct and needed to make file requirements work but is a performance nightmare. To get around that there is a different algorithm that can be used. Instead of verifying the delta (resolve requires for added and provides for removed pkgs) one can verify the whole transaction. This means resolve requirements of all packages that stay installed and get installed. For normal requirements this is much more expensive than the delta approach. But as there are comparably few file requirements this is much faster than resolving every removed file.

So the idea is keeping the delta algorithm for normal requires and provides,
don't use files as provides and resolve file requirements globally.

There is one additional problem: As the resolver should keep unresolved dependencies within the installed packages a list of all installed unresolved file requirements must be calculated at the start and unresolved file requirements must be check against it and be ignored if found.

Have fun

        Florian Festi
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to