为了账号安全,请及时绑定邮箱和手机立即绑定

计算能力的速度(在Python中)

计算能力的速度(在Python中)

我很好奇为什么乘以比在python中取幂要快得多(尽管据我所读,这在许多其他语言中也可能是正确的)。例如,这样做快得多x*x比x**2我认为**运算符比较笼统,也可以处理小数幂。但是,如果这就是为什么它这么慢,为什么不执行int指数检查,然后执行乘法运算呢?编辑:这是我尝试过的一些示例代码...def pow1(r, n):  for i in range(r):    p = i**ndef pow2(r, n):  for i in range(r):    p = 1    for j in range(n):      p *= i现在,pow2只是一个简单的例子,显然没有进行优化!但是即使如此,我仍然发现使用n = 2且r = 1,000,000时,pow1约需2500ms,pow2需约1700ms。我承认,对于较大的n值,pow1的确比pow2快得多。但这并不奇怪。
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

基本上,天真的乘法是常数因子非常低的O(n)。取幂是具有较高常数因子的O(log n)(在某些特殊情况下,需要测试...分数指数,负指数等)。编辑:只是要清楚,这是O(n)其中n是指数。


当然,对于小n,天真方法会更快,您实际上只是实现了一小部分指数数学,因此您的常数因子可以忽略不计。


查看完整回答
反对 回复 2019-11-04
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

添加支票也是费用。你一直想要那张支票吗?编译语言可以检查一个恒定的指数,以查看它是否是一个相对较小的整数,因为没有运行时成本,而只有编译时成本。解释性语言可能不会进行检查。

除非该语言指定了此类详细信息,否则这取决于特定的实现。

Python不知道您要喂食什么指数分布。如果它将是99%的非整数值,您是否希望代码每次都检查一个整数,从而使运行时间更慢?


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 816 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信