[Checkins] SVN: zc.table/trunk/src/zc/table/column.py Speed up column sorting (helps a lot when 10k of items are involved,
Ignas Mikalajënas
ignas at pov.lt
Mon Oct 20 11:49:39 EDT 2008
Log message for revision 92406:
Speed up column sorting (helps a lot when 10k of items are involved,
especially when you have a moderately expensive getSortKey function)
Changed:
U zc.table/trunk/src/zc/table/column.py
-=-
Modified: zc.table/trunk/src/zc/table/column.py
===================================================================
--- zc.table/trunk/src/zc/table/column.py 2008-10-20 15:19:25 UTC (rev 92405)
+++ zc.table/trunk/src/zc/table/column.py 2008-10-20 15:49:38 UTC (rev 92406)
@@ -59,11 +59,13 @@
else:
items = list(items) # don't mutate original
getSortKey = self.getSortKey
- items.sort(
- lambda a, b: multiplier*cmp(getSortKey(a, formatter),
- getSortKey(b, formatter)))
- return items
+ # let's do decorate, sort, undecorate trick here to conserve time
+ tmp_items = [(getSortKey(item, formatter), item) for item in items]
+ tmp_items.sort(lambda a, b: multiplier*cmp(a[0], b[0]))
+
+ return [item for key, item in tmp_items]
+
def sort(self, items, formatter, start, stop, sorters):
return self._sort(items, formatter, start, stop, sorters, 1)
More information about the Checkins
mailing list