Am 12.03.11 16:58, schrieb Nick Coghlan:
On Sat, Mar 12, 2011 at 4:50 PM, Reid Kleckner<reid.kleck...@gmail.com> wrote:
They should be able to use a slotted cmp_to_key style class:
http://docs.python.org/howto/sorting.html
That will allocate 1 Python object with no dict per key, but that
might not be good enough.
Tuples are already slotted, so that isn't likely to help in this case.
Why not? IIUC, the current key function creates three objects: the
tuple, the short string, and the int. With the class
class cmp_to_key:
__slots__=['obj']
def __init__(self, obj):
self.obj = obj
def __lt__(self):
...
you would only create a single object, so you save the string and the
integer. In addition, on a 64-bit system, the size of a cmp_to_key
instance is 56 bytes, whereas a two-tuple is 72 bytes, so you also
save 16 bytes per object. Whether that would already create a sufficient
reduction for the case at hand, I don't know.
Regards,
Martin
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com