Aaron Hall <[email protected]> added the comment:
New information: I think I have pinpointed at least a contributor to the
difference - closure lookups seem to be currently slightly slower (by a few
percent) than global lookups (see https://stackoverflow.com/a/46798876/541136).
And as we can see, an inner function that references itself is a closure on
itself (see LOAD_DEREF):
>>> def foo():
... def bar():
... return bar
... return bar
...
>>> bar = foo()
>>> import dis
>>> dis.dis(bar)
3 0 LOAD_DEREF 0 (bar)
2 RETURN_VALUE
This, at least to me, explains why the performance difference doesn't
completely amortize away.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue31753>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com