在Python3中,我发现如果我替换
for i in range(n):
对账单
while i < n:
我获得了显著的运行时增益。我的循环本身并不充实,因为它做了一些基本的算术运算。你知道吗
有什么线索能说明我为什么会看到这种行为吗?你知道吗
编辑:n的范围是K、10K、12K等的10s 我观察到的计时是.19s,12K,12s,10K,while循环。而使用“while”循环,我看到12K是.11秒,10K是.08秒。 这是我的程序:
target = 0 i = 1 #for i in range(1, n+1): while i < n+1: target += i * (2 ** (i - 1)) + (i * (i + 1))//2 i += 1 return target % (10 ** 9 + 7)
range
涉及少量固定开销(首先在全局中查找range
,然后在内置中查找,然后是泛型函数调用调度和分配/初始化对象的成本);如果n
足够小,则不会在减少的每循环成本上得到弥补:但是,当
n
达到中等大小时,每项开销的减少会带来回报:range
涉及更高的固定成本,但每项成本更低,仅此而已。你知道吗相关问题 更多 >
编程相关推荐