[yum-cvs] yum/yum rpmsack.py,1.45,1.46
Jeremy Katz
katzj at linux.duke.edu
Thu Apr 26 15:30:16 UTC 2007
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv18805/yum
Modified Files:
rpmsack.py
Log Message:
reduce overhead of rpmack._search (Florian Festi)
Index: rpmsack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/rpmsack.py,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- rpmsack.py 17 Apr 2007 20:32:28 -0000 1.45
+++ rpmsack.py 26 Apr 2007 15:30:14 -0000 1.46
@@ -47,6 +47,7 @@
def __init__(self, root='/'):
self.root = root
self._header_dict = {}
+ self._header_by_name = {}
self.ts = None
def _get_pkglist(self):
@@ -241,7 +242,8 @@
for (hdr, idx) in self._all_packages():
pkgtup = self._hdr2pkgTuple(hdr)
self._header_dict[pkgtup] = (hdr, idx)
-
+ self._header_by_name.setdefault(pkgtup[0], []).append(
+ (pkgtup, (hdr, idx)))
def _search(self, name=None, epoch=None, ver=None, rel=None, arch=None):
'''Generator that yield (header, pkgtup, index) for matching packages
@@ -266,7 +268,12 @@
hdr, idx = self._header_dict[pkgtup]
ret.append( (hdr, pkgtup, idx) )
else:
- for (pkgtup, (hdr, idx)) in self._header_dict.items():
+ if name is not None:
+ pkg_list = self._header_by_name.get(name, [ ])
+ else:
+ pkg_list = self._header_dict.items()
+
+ for (pkgtup, (hdr, idx)) in pkg_list:
ok = True
for thisindex, val in lookfor:
if pkgtup[thisindex] != val:
More information about the Yum-cvs-commits
mailing list