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