为什么//计算更快/(或不是)

时间:2019-11-28 12:23:30

标签: python python-3.x cpython

我只是在尝试一些代码,却发现一些对我毫无意义的东西

>>> import timeit
>>> timeit.timeit("524288000/1024/1024")
0.05489620000000173
>>> timeit.timeit("524288000//1024//1024")
0.030612500000017917
>>> 

在计算中使用//比/计算要快

但是当我重复此操作时,结果如下:

>>> timeit.timeit("524288000//1024//1024")
0.02494899999999234
>>> timeit.timeit("524288000/1024/1024")
0.02480830000001788

现在比//快//对我来说没有意义

这是为什么?

编辑:

实验结果与10000次重复的次数成正比:

avg for /: 0.0261193088
avg for //: 0.025788395899999896

1 个答案:

答案 0 :(得分:1)

计时功能时,CPU会计算指令完成时间与指令开始时间之间的差,但是很多事情发生在后台,而不仅仅是您正在计时的算法。

尝试阅读一些有关操作系统的书,您会更好地理解。

为了进行此类实验,您应该重复执行该算法数千次,以免出现变异。

尝试以下代码,但是如果您想进行实际实验,请将循环值更改为更大的值

import timeit

loops = 100    

oneSlashAvg = 0
for i in range(loops):
    oneSlashAvg += timeit.timeit("524288000/1024/1024")
print(oneSlashAvg/loops)

doubleSlashAvg = 0
for i in range(loops):
    doubleSlashAvg += timeit.timeit("524288000//1024//1024")
print(doubleSlashAvg/loops)