10^200) 大得多的大数字,所以我使用了 BigIntegers。我执行的最常见操作是将它们添加到累加器中,例如: BigInteger A = new BigInte-6ren">
gpt4 book ai didi

java - Java能否在循环中优化 "mutating"BigInteger操作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:29 25 4
gpt4 key购买 nike

我需要处理很多比长整数 (>10^200) 大得多的大数字,所以我使用了 BigIntegers。我执行的最常见操作是将它们添加到累加器中,例如:

BigInteger A = new BigInteger("0");
for(BigInteger n : nums) {
A = A.add(n);
}

当然,为破坏性行为制作副本是相当浪费的(好吧,只要有足够大的缓冲区可用),所以我想知道 Java 是否可以以某种方式优化它(我听说有一个 MutableBigInteger 类没有被数学公开.java) 还是我应该只编写自己的 BigInteger 类。

最佳答案

是的,有一个 java.math.MutableBigInteger 类被 BigInteger 用于计算密集型操作。不幸的是,它被声明为私有(private)包,因此您不能使用它。 Apache Commons 库中还有一个“MutableBigInteger”类,但它只是 BigInteger 的可变包装器,对您没有帮助。

I was wondering if Java can optimize this somehow ...

不……尽管有上述情况。

or whether I should just write my own BigInteger class.

这是一种方法。

另一种方法是下载 OpenJDK 源代码,找到 java.math.MutableBigInteger 的源代码,更改其包名和访问权限,并将其合并到您的代码库中。唯一的障碍是 OpenJDK 是根据 GPL(我认为是 GPL-2)获得许可的,如果您使用修改后的类分发代码,这会产生影响。

另见:

关于java - Java能否在循环中优化 "mutating"BigInteger操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10652673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com