亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算能力的速度(在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 關注
  • 915 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號