У меня есть небольшой программный продукт, который вычисляет количество факторов для каждого номера треугольника, чтобы увидеть, что первый из них имеет больше, чем число X факторов (да, это проблема проектировщика, число 12 , хотя я еще не решил) ... так как я пытаюсь сделать X несколько случайных значений, чтобы увидеть, что делает код и через какое время, я заметил кое-что странное (по крайней мере для меня): пока X =47 время выполнения, очевидно, увеличивается обычным образом, но когда X = 48, оно увеличивается больше, чем обычно, и вызовы функций намного превышают скорость, это (взрывается), если я скажу, что ... почему это происходит ??
код:
def fac(n):
c=0
for i in range (1,n+1):
if n%i==0:
c=c+1
return c
n=1
while True:
summ=0
for i in range (1,n+1):
summ=summ+i
if fac(summ)>X:
break
n=n+1
print summ
и при профилировании:
when X=45 : 314 function calls in 0.027 CPU seconds
when X=46 : 314 function calls in 0.026 CPU seconds
when X=47 : 314 function calls in 0.026 CPU seconds
when X=48 : 674 function calls in 0.233 CPU seconds
when X=49 : 674 function calls in 0.237 CPU seconds
Я предполагаю, что если я продолжу, я столкнусь с другими моментами, что системные вызовы увеличиваются и время внезапно увеличивается,и раньше были такие моменты, но время было таким маленьким, что это не имело большого значения .. Почему вызовы функций внезапно увеличиваются ??Разве это не должно просто вызвать функцию еще раз для нового значения ??
PS я использую cProfile в качестве профилировщика, и X
в коде здесь только для демонстрации, я пишу значениепрямо в коде ... заранее спасибо ...