开发者

Why a procedure is so much faster when put into a function?

开发者 https://www.devze.com 2023-03-27 16:41 出处:网络
Here is what I did, I created 2 procedures, one in a function and one in the python file itself. The one on the python file itself run almost 2 times slower even if it\'s exactly the same. WHY ?

Here is what I did, I created 2 procedures, one in a function and one in the python file itself. The one on the python file itself run almost 2 times slower even if it's exactly the same. WHY ?

Bellow is an example with 2 procedures that are just loops on P element

I have the following python file :

from time import *
P=1000000 #range of the 2 loops

def loop(N):
        for k in ran开发者_运维问答ge(N):
                continue

start=time()
loop(P)
stop1=time()
for k in range(P):
            continue
stop2=time()
print "time with function ",stop1-start
print "time without function ",stop2-stop1

Here is what I get (I tried it with one thousand samples and the result is the following) :

time with function  0.0950000286102
time without function  0.15700006485

with xrange instead of range I get :

time with function  0.0460000038147
time without function  0.107999843597

So it's like 0.05 second in used to build the list

I know it's may be a useless question, but If someone know why is this going so much faster I would be happy to know


The only significant difference is that the version in the function is only updating the local variable for that function, whereas the version not in a function is updating a global variable k.

As mentioned here:

The final speedup available to us for the non-map version of the for loop is to use local variables wherever possible. If the above loop is cast as a function, append and upper become local variables. Python accesses local variables much more efficiently than global variables.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号