python - 无限的int值的运算耗时特性

本文探讨了在Python中进行大量整数运算时,尤其是涉及无限整数(大于64位)的运算,所观察到的效率差异。作者通过实验发现,即使是简单的运算,如累乘和累除,也会因为变量和运算次数的不同导致显著的效率差异。经过分析,作者怀疑这可能与Python内部处理大整数的方式有关,即在超过64位边界时,整数的存储和运算可能涉及到额外的转换和拼接操作,从而增加耗时。尽管%%timeit的准确性受到质疑,但实验结果提示在理论探讨中,需要更严谨的测试框架来评估运算效率。
摘要由CSDN通过智能技术生成

标题我真的不知道该怎么写了!经历了这么多运算后!

1152921504606846974%2
15.9 ns ± 0.0631 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
2%2
15.9 ns ± 0.0672 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)

我在想,这东西丢给cpu算,效率几乎一样的,即便是丢给他一个超出64位的去运算,也高不了多少,那么在去质数操作中,我是让质数累乘后去和X对比,还是X一遍遍的去除以质数。

大家先别写,自己思考下,是否有肯定的判断结果。

然后我写了下,我去~

%%timeit
a=1152921504606846974
i=2
while 1:
    a=a/i
    if a%1!=0:break
11.6 µs ± 81.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%%timeit
a=1152921504606846974
i=2
while 1:
    t=a/i
    if t%1!=0:break
    i*=2
32.3 µs ± 662 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

步骤和变量都是有差别的,效率更是差很多,想和做是两码事,关键是思维和转化成代码时,会不可避免的写出思维与代码间的架构,而这些思维以外又不得不存在的东西,是思维的不够谨慎还是懒惰还是现实,总之写出来后,变量多了一个,操作多了一行,耗时增加到近3倍。虽然很好奇,为什么增加了这么多。

是%%timeit的疏漏还是某些过程真的很耗时。

%%timeit
a=1152921504606846974
i=2
for j in range(60):
    a=a/i
    if a%1!=0:break
13 µs ± 37.1 ns per loop 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值