[Yum-devel] [PATCH] Call repo.__hash__() less.

Ville Skyttä ville.skytta at iki.fi
Thu Jan 28 21:48:32 UTC 2010


On my (typicalish) Fedora 11 box, brings down number of those calls in
a check-update run from ~146k to ~27k and speeds it up by ~7%.
---
 yum/sqlitesack.py |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 8452526..98628d7 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -564,10 +564,10 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         return False
 
     def _pkgKeyExcluded(self, repo, pkgKey):
-        if repo in self._all_excludes:
+        if self._all_excludes and repo in self._all_excludes:
             return True
 
-        return (repo, pkgKey) in self._excludes
+        return self._excludes and (repo, pkgKey) in self._excludes
 
     def _pkgExcludedRKNEVRA(self, repo,pkgKey, n,e,v,r,a):
         ''' Main function to use for "can we use this package" question.
@@ -577,7 +577,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
                 . Tests addPackageExcluder() calls.
         '''
 
-        if (repo, pkgKey) in self._exclude_whitelist:
+        if self._exclude_whitelist and (repo,pkgKey) in self._exclude_whitelist:
             return False
 
         if self._pkgKeyExcluded(repo, pkgKey):
@@ -735,11 +735,12 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
             return the pkgtup. """
         if self._pkgExcludedRKD(repo, pkgKey, data):
             return None
-        if repo not in self._key2pkg:
+        prepo = self._key2pkg.get(repo)
+        if prepo is None:
             self._key2pkg[repo] = {}
             self._pkgname2pkgkeys[repo] = {}
-        if data['pkgKey'] in self._key2pkg.get(repo, {}):
-            return self._key2pkg[repo][data['pkgKey']].pkgtup
+        elif data['pkgKey'] in prepo:
+            return prepo[data['pkgKey']].pkgtup
         return (data['name'], data['arch'],
                 data['epoch'], data['version'], data['release'])
 
-- 
1.6.2.5



More information about the Yum-devel mailing list