About Python execution speed
Stefan Behnel
stefan_ml at behnel.de
Mon Apr 12 06:30:35 EDT 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