为什么 // 计算速度更快 / 计算(或不是)
why are // calculations faster the / calculations(or not)
我只是在试验一些代码,然后我发现了一些对我来说毫无意义的东西
>>> 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
当您为一个函数计时时,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)
我只是在试验一些代码,然后我发现了一些对我来说毫无意义的东西
>>> 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
当您为一个函数计时时,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)