执行时间差异

时间:2019-07-09 23:08:42

标签: python

当尝试测量一段代码的执行时间以计算列表中的最小值时(不使用内置方法),我得到两个不同代码的时间不同。

代码1:

%%timeit 
minimum = None

for x in num:
    if minimum == None:
        minimum=x

    elif x<minimum:
        minimum=x

    else:
        continue

1.47 µs ± 186 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

代码2:

%%timeit 
minimum = num[0]

for x in num:
    if x<minimum:
        minimum=x

    else:
        continue

897 ns ± 65.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

为什么这两段代码之间存在如此大的差异?几乎没有任何区别。是因为我使用了第二个代码中特定列表位置的数据吗?

1 个答案:

答案 0 :(得分:4)

Code 1中还有一个额外的检查-仅在第一次迭代中有用,但是您会继续检查每个迭代。由于代码很少,因此会使程序运行速度降低近2倍。

顺便说一句,else: continue什么都不做-Python自然会在循环的底部继续。

嗯...也许您没有注意到时间单位的差异?测量值是1470 ns和897 ns。