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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to