Java BigInteger替代方案

Ily*_*man 13 java biginteger

有没有BigInteger在java中使用的替代方案?

当您对其执行操作时BigInteger,始终会导致BigInteger创建新的操作.是否有其他实现,其中两个大整数之间的某些操作的结果存储在其中一个中?

例如,在Java中执行两个大整数的乘法时:创建a * b一个new BigInteger来托管结果.我想存储结果a.

我想这样做是为了提高我的算法的一些情况下的性能

Mak*_*oto 14

如果你能以某种方式做到这一点,我怀疑你的算法的性能会提高,但主要原则BigInteger是不可变的.如果不生成新实例,则无法对其执行操作,并且有充分的理由希望这种行为 - 即,如果您在单个操作上有多个线程BigInteger,则可以放心,这些线程不会BigInteger直接覆盖*.

如果你不希望这种行为,你唯一的选择是创建一个新类,但请记住,你仍然会BigInteger某个层处理s 的不变性.

*:你知道,只要你没有重新分配变量......


Dav*_*oko 9

那里有可变的"版本" BigInteger(例如:https://github.com/bwakell/Huldra)或者你可以推出自己的版本.使用可变对象可以降低GC上的压力.您真的应该对应用程序进行基准测试,看看这是否值得付出努力.

  • 实际上,Java也有一个MutableBigInteger类,但它仅在内部使用。 (2认同)