About Python execution speed

Stefan Behnel stefan_ml at behnel.de
Mon Apr 12 12:30:35 CEST 2010


Leonardo Giordani, 12.04.2010 11:51:
> I'm facing a strange issue in Python execution speed. I'm running the
> following test script:
>
> ---------------------------------8<-----------------------------------------
>
> dim = 1000
> iteration = 100000
>
> list1 = []
> list2 =  []
>
> for i in range(dim):
>      list1.append(float(i))
>      list2.append(float(i) * 0.264)

What about this:

list1 = list(map(float, xrange(dim)))
list2 = [f * 0.264 for f in list2]


> for k in range(iteration):
>      for j in range(dim):
>          ris = 0
>          ris = ris + list1[j] + list2[j]

What result do you expect for 'ris' after the last two lines?


> ---------------------------------8<-----------------------------------------
>
> which runs in about 80 seconds on my local hardware (mean of multiple
> execution)
> If I move the whole code into a function and call this latter the execution
> time drops to about 45 seconds.
>
> What is the reason of this improvement?

Local variables in a function can be accessed much faster than globally 
defined names (which require a dictionary lookup). This is a good thing 
because the access to local variables tends to be much more performance 
critical than that to globals.

Stefan




More information about the Python-list mailing list