我正在计算计算机上计算两个 n 位整数的乘积所需的时间。
我正在使用此代码来执行此操作:
import timeit
for i in range(50):
avg=0
for j in range(30):
avg+=timeit.timeit('a*b','a='+str(10**i)+';b='+str(10**i))
print(avg/30)
它返回图形结果:
其中 X 轴为 n,Y 轴为所用时间(以秒为单位)。可以看到,当它是10的倍数时,所花费的时间大约在n处增加,并且不是不断增加的。
我不明白为什么花费的时间会有这样的变化。
最佳答案
Python int 的大小是 stored作为 30 位 block 的序列(有时是 15 位 block ,但现在这种情况很少见)。将数字延长 9 位十进制数字大约需要 30 位,而两个数字相乘所需的时间主要取决于每个数字需要多少个 30 位 block ,因此时间会以大约 9 位十进制数字的增量增加。
关于python - 为什么当n以10秒为单位增加时,Python将两个n位整数相乘所需的时间只会增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511908/