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().

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.

Comments are welcome.

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

Reply via email to