Hi!

Attached patch improves performance for empty PRCO lists (YumAvailablePackageSqlite.returnPRCO). For a big update (170 pkgs) it saves 27% of the time.

Florian
Index: yum/packages.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/packages.py,v
retrieving revision 1.101
diff -u -r1.101 packages.py
--- yum/packages.py	25 Apr 2007 20:19:19 -0000	1.101
+++ yum/packages.py	27 Apr 2007 10:03:53 -0000
@@ -235,7 +235,7 @@
         if not self.prco.has_key(prcotype):
             return 0
         # exact match    
-        if prcotuple in self.prco[prcotype]:
+        if self.prco[prcotype] and prcotuple in self.prco[prcotype]:
             return 1
         else:
             # make us look it up and compare
Index: yum/sqlitesack.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/sqlitesack.py,v
retrieving revision 1.97
diff -u -r1.97 sqlitesack.py
--- yum/sqlitesack.py	25 Apr 2007 18:28:31 -0000	1.97
+++ yum/sqlitesack.py	27 Apr 2007 10:03:54 -0000
@@ -36,10 +36,10 @@
 class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
     def __init__(self, repo, db_obj):
         self._checksums = []
-        self.prco = { 'obsoletes': [],
-                      'conflicts': [],
-                      'requires': [],
-                      'provides': [] }
+        self.prco = { 'obsoletes': None,
+                      'conflicts': None,
+                      'requires': None,
+                      'provides': None }
         self._files = {}
         self.sack = repo.sack
         self.repoid = repo.id
@@ -176,7 +176,8 @@
         return RpmBase.returnFileTypes(self)
 
     def returnPrco(self, prcotype, printable=False):
-        if not self.prco[prcotype]:
+        if self.prco[prcotype] is None:
+            self.prco[prcotype] = [ ]
             cache = self.sack.primarydb[self.repo]
             cur = cache.cursor()
             query = "select %s.name as name, %s.version as version, "\
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to