Hi!
I am going to apply this patch tomorrow as it drops creating this lists from
200s to 0.5s on a 9000pkg transaction.
have fun
Florian
>From daf8afb7b79838f98c4d0d114a7b70505e78a703 Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Mon, 7 Jan 2008 17:53:48 +0100
Subject: [PATCH] Fix performance problem in TransactionData.makelists()
---
yum/transactioninfo.py | 66 +++++++++++++++++++++++++++--------------------
1 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index 725789f..cf4ff68 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -241,60 +241,70 @@ class TransactionData:
updated, installed, erased, obsoleted, depupdated, depinstalled
deperased"""
- self.instgroups = []
- self.removedgroups = []
- self.removed = []
- self.installed = []
- self.updated = []
- self.obsoleted = []
- self.depremoved = []
- self.depinstalled = []
- self.depupdated = []
+ self.instgroups = set()
+ self.removedgroups = set()
+ self.removed = set()
+ self.installed = set()
+ self.updated = set()
+ self.obsoleted = set()
+ self.depremoved = set()
+ self.depinstalled = set()
+ self.depupdated = set()
for txmbr in self.getMembers():
if txmbr.output_state == TS_UPDATE:
if txmbr.isDep and txmbr.reason == "dep":
- self.depupdated.append(txmbr)
+ self.depupdated.add(txmbr)
else:
- self.updated.append(txmbr)
+ self.updated.add(txmbr)
elif txmbr.output_state == TS_INSTALL or txmbr.output_state == TS_TRUEINSTALL:
if txmbr.groups:
for g in txmbr.groups:
if g not in self.instgroups:
- self.instgroups.append(g)
+ self.instgroups.add(g)
if txmbr.isDep:
- self.depinstalled.append(txmbr)
+ self.depinstalled.add(txmbr)
else:
- self.installed.append(txmbr)
+ self.installed.add(txmbr)
elif txmbr.output_state == TS_ERASE:
for g in txmbr.groups:
if g not in self.instgroups:
- self.removedgroups.append(g)
+ self.removedgroups.add(g)
if txmbr.isDep:
- self.depremoved.append(txmbr)
+ self.depremoved.add(txmbr)
else:
- self.removed.append(txmbr)
+ self.removed.add(txmbr)
elif txmbr.output_state == TS_OBSOLETED:
- self.obsoleted.append(txmbr)
+ self.obsoleted.add(txmbr)
elif txmbr.output_state == TS_OBSOLETING:
- self.installed.append(txmbr)
+ self.installed.add(txmbr)
else:
pass
- self.updated.sort()
- self.installed.sort()
- self.removed.sort()
- self.obsoleted.sort()
- self.depupdated.sort()
- self.depinstalled.sort()
- self.depremoved.sort()
- self.instgroups.sort()
- self.removedgroups.sort()
+ self.instgroups = list(self.instgroups)
+ self.removedgroups = list(self.removedgroups)
+ self.removed = list(self.removed)
+ self.installed = list(self.installed)
+ self.updated = list(self.updated)
+ self.obsoleted = list(self.obsoleted)
+ self.depremoved = list(self.depremoved)
+ self.depinstalled = list(self.depinstalled)
+ self.depupdated = list(self.depupdated)
+
+ self.updated.sort()
+ self.installed.sort()
+ self.removed.sort()
+ self.obsoleted.sort()
+ self.depupdated.sort()
+ self.depinstalled.sort()
+ self.depremoved.sort()
+ self.instgroups.sort()
+ self.removedgroups.sort()
def addInstall(self, po):
--
1.5.3.3
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel