seth vidal wrote:
On Mon, 2007-08-06 at 13:52 +0200, Florian Festi wrote:
Hi!

I've done some profiling runs to find quadratic behavior / places for further optimization. It turned out that TransactionData (Why doesn't the class name match the module name, btw?) .matchNaevr() uses up 25% of the time of the "install [a-k]*" test case (large transaction with lots of depsolving). I'd suggest to reorganize .pkgdict to {name -> [txmbrs]} and rename it to ._pkgdict. This would make getting the txmbr of the given package slightly more expensive but lets us getting rid of the linear runtime of .matchNaevr().

How would doing name->txmbrs compare with implementing
RPMDBPackageSack._search() in TransactionData?

We'd need to do the same search in all three- - RPMDBPackageSack, the pkgSack (SqliteSack) and the localSack - and after that do the pkgtup lookup. Sound a bit like overkill.

Second thing I'd like to do is killing the DepCheck class. I already argued why I don't think the .check*() results should go there. So what's left in there is are already_seen dicts. I'd like to move them to the transactioninfo and to change them to one or may be two (install/remove) positive list of what still needs checking. That would have the advantage that we can add pkgs that are not part of the transaction. This could for example be used to fix up broken installations (as --checkinstalled or as an external tool). Having positive lists has also the advantage that these lists don't keep growing which might be better for interactive users of the depsolver like pirut.

I'm not sure I understand what you mean when you say 'positive list'. Do
you mean a list of things we need to check, as opposed to a list of
things we've already checked? That's what it seems like from what you've
described - but I just wanted to make sure you're not using 'positive
list' as a type of jargon.

Yeah, I probably should choose my words with a bit more care...
You understood quite right: a lists/sets of that still needs to be checked.

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

Reply via email to