我很好奇為什么乘以比在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,天真方法會更快,您實際上只是實現了一小部分指數數學,因此您的常數因子可以忽略不計。

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
添加支票也是費用。你一直想要那張支票嗎?編譯語言可以檢查一個恒定的指數,以查看它是否是一個相對較小的整數,因為沒有運行時成本,而只有編譯時成本。解釋性語言可能不會進行檢查。
除非該語言指定了此類詳細信息,否則這取決于特定的實現。
Python不知道您要喂食什么指數分布。如果它將是99%的非整數值,您是否希望代碼每次都檢查一個整數,從而使運行時間更慢?
添加回答
舉報
0/150
提交
取消