Почему процедура выполняется намного быстрее, когда помещена в функцию?

Вот что я сделал: я создал 2 процедуры, одну в функции и одну в самом файле python. Тот, что находится в самом файле python, работает почти в 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 секунды

Я знаю, что это может быть бесполезный вопрос, но если кто-то знает, почему это происходит намного быстрее, я были бы рады узнать

8
задан Ricky Bobby 11 August 2011 в 16:07
поделиться