[yum-cvs] yum/rpmsack.py
Florian Festi
ffesti at linux.duke.edu
Tue Dec 11 10:40:22 UTC 2007
yum/rpmsack.py | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
New commits:
commit a71eb64a2e2fc656f11b73b70757877a365120e5
Author: Florian Festi <ffesti at redhat.com>
Date: Mon Dec 10 18:53:34 2007 +0100
Add caching for RpmSack.searchPrco/searchFiles
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 5081070..ad2cfd3 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -50,6 +50,13 @@ class RPMDBPackageSack(PackageSackBase):
self._header_dict = {}
self._header_by_name = {}
self.ts = None
+ self._cache = {
+ 'files' : { },
+ 'provides' : { },
+ 'requires' : { },
+ 'conflicts' : { },
+ 'obsoletes' : { },
+ }
def _get_pkglist(self):
'''Getter for the pkglist property.
@@ -102,6 +109,11 @@ class RPMDBPackageSack(PackageSackBase):
def searchFiles(self, name):
"""search the filelists in the rpms for anything matching name"""
+
+ result = self._cache['files'].get(name)
+ if result is not None:
+ return result
+
ts = self.readOnlyTS()
result = {}
@@ -112,11 +124,16 @@ class RPMDBPackageSack(PackageSackBase):
result[pkg.pkgid] = pkg
del mi
-
- return result.values()
+ result = result.values()
+ self._cache['files'][name] = result
+ return result
def searchPrco(self, name, prcotype):
+ result = self._cache[prcotype].get(name)
+ if result is not None:
+ return result
+
ts = self.readOnlyTS()
result = {}
tag = self.DEP_TABLE[prcotype][0]
@@ -140,7 +157,9 @@ class RPMDBPackageSack(PackageSackBase):
del mi
- return result.values()
+ result = result.values()
+ self._cache[prcotype][name] = result
+ return result
def searchProvides(self, name):
return self.searchPrco(name, 'provides')
More information about the Yum-cvs-commits
mailing list