[Python-Dev] Draft proposal: Implicit self in Python 3.0

Ralf W. Grosse-Kunstleve rwgk at yahoo.com
Sun Jan 8 16:35:53 CET 2006


--- Fredrik Lundh <fredrik at pythonware.com> wrote:

> Ralf W. Grosse-Kunstleve wrote:
> 
> > ***Please*** make Python more selfish. Note that this is also an obvious
> avenue
> > for significant performance increases. If self is implicit you don't have
> to do
> > the dictionary lookup for "self" all the time as is the case now.
> 
> what dictionary lookup ?

IIUC, "self" is first looked up in the local dictionary.

Please try the code below to see the performance impact. As an alternative to a
copy/paste exercise try this:

wget http://cci.lbl.gov/~rwgk/python/self_lookup.py
python self_lookup.py

The output with Python 2.4.1/Fedora3/Opteron is:

loop_function: 13.10
   loop_class: 17.11

Cheers,
        Ralf


import time

def loop_function(x, n):
  result = 0
  for i in xrange(n):
    result += x
  return result

class loop_class:

  def __init__(self, x, n):
    self.x = x
    self.n = n

  def __call__(self):
    result = 0
    for i in xrange(self.n):
      result += self.x
    return result

def run(x=3.1415, n=10**8):
  t0 = time.time()
  loop_function(x=x, n=n)
  print "loop_function: %.2f" % (time.time() - t0)
  t0 = time.time()
  loop_class(x=x, n=n)()
  print "   loop_class: %.2f" % (time.time() - t0)

if (__name__ == "__main__"):
  run()



		
__________________________________________ 
Yahoo! DSL – Something to write home about. 
Just $16.99/mo. or less. 
dsl.yahoo.com 



More information about the Python-Dev mailing list