我只是在尝试一些代码,却发现一些对我毫无意义的东西
>>> 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
答案 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)