[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