[Python-Dev] PEP 329: Treating Builtins as Constants inthe Standard Library

Samuele Pedroni pedronis at bluewin.ch
Tue Apr 20 06:49:34 EDT 2004


At 06:29 20.04.2004 -0400, Raymond Hettinger wrote:
> > he's proposing an hack that would speed up CPython and slow down
>Jython
> > (because it would result in a no-op but OTOH he would like to remove
>the
> > code
> > when some globals are bound to locals for speed reason. Of course
>that's
> > not nice too
> > but replacing a hack with another is just sort of a win. Honestly
>there
> > are
> > probably
> > very convoluted ways to make this, in this form, a non no-op on Jython
> > too,
> > not that I would like to
> > implement them or that Raymond cared).
>
>Factually false on both counts.
>
>I do care. Jython was a key design consideration from the beginning.
>Guido and I specifically went over the non-CPython implications before
>the PEP was submitted.
>
>The no-op is automatic and makes bind_all equal to lambda *args, **kwds:
>0.  It is invoked only the first time a module is imported.   The time
>difference is unmeasurably miniscule.

from the PEP

"""
The library contains code such as _len=len which is intended to create fast 
local references instead of slower global lookups. Though necessary for 
performance, these constructs clutter the code and are usually incomplete 
(missing many opportunities).

If the proposal is adopted, those constructs could be eliminated from the 
code base and at the same time improve upon their results in terms of 
performance.
"""

if they are eliminated (_len = len), then CPython will win because of the 
binding at load time
and the fact that time is not lost at each function call  for binding them, 
Jython will loose something
because if they were there, there was likely a reason.











More information about the Python-Dev mailing list