为什么程序在放入函数时要快得多?

时间:2011-08-11 15:39:15

标签: python performance local-variables

这是我做的,我创建了2个过程,一个在函数中,一个在python文件中。即使它完全相同,python文件本身的一个运行速度差不多2倍。为什么?

Bellow是一个带有2个过程的例子,它们只是P元素上的循环

我有以下python文件:

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

def loop(N):
        for k in range(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

这是我得到的(我尝试了一千个样本,结果如​​下):

time with function  0.0950000286102
time without function  0.15700006485

使用xrange而不是范围我得到:

time with function  0.0460000038147
time without function  0.107999843597

因此用于构建列表的时间为0.05秒

我知道这可能是一个无用的问题,但是如果有人知道为什么这会快得多,我会很高兴知道

1 个答案:

答案 0 :(得分:14)

唯一显着的区别是函数中的版本仅更新该函数的局部变量,而函数中的版本不更新全局变量k。 / p>

如上所述here

  

对于for循环的非映射版本,我们可用的最终加速是尽可能使用局部变量。如果将上述循环强制转换为函数,则append和upper将变为局部变量。 Python比全局变量更有效地访问局部变量。