Simon Sapin wrote:
> I’m working on a patch for a key parameter. I think it can be pretty
> straightforward, but I’ll measure if the "no key" case becomes slower
> (calls to lambda x: x) At worst we can always duplicate the loop.
In my experience, it is *much* faster to test against None every time through
the loop than to call a do-nothing function. Instead of this:
if key is None:
key = lambda x: x
for value in heap:
do_something_with(key(value))
this is much faster:
for value in heap:
if key is None:
do_something_with(value)
else:
do_something_with(key(value))
and this is faster still:
if key is None:
for value in heap:
do_something_with(value)
else:
for value in heap:
do_something_with(key(value))
YMMV; I encourage you to benchmark.
--
Steven