[英]Which algorithm does Java use for multiplication?
可能的乘法算法列表很長:
Java默認使用哪一個,為什么? 它什么時候切換到“更好的性能”算法?
好吧... *
運算符將使用硬件提供的任何內容。 Java 沒有發言權。
但是如果你在談論BigInteger.multiply(BigInteger)
,答案取決於 Java 版本。 對於 Java 11,它使用:
閾值是由 80 到 239 int
值表示的數字的 Karatsuba,對於 >= 240 int
值的 3-way Toom-Cook。 乘以較小的數字控制算法選擇。
Java默認使用哪一個,為什么?
哪個? 看上面。
為什么? 代碼中的注釋暗示閾值是根據經驗選擇的; 即有人做了一些系統的測試,以確定哪些閾值給出了最好的性能1 。
您可以通過閱讀源代碼2找到更多詳細信息。
1 - 當前的實現BigInteger
實現自 2013 年以來沒有顯着變化,因此它可能沒有包含更多最近的研究結果。
2 - 請注意,此鏈接指向 Github 上的最新版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.