有没有BigInteger在java中使用的替代方案?
当您对其执行操作时BigInteger,始终会导致BigInteger创建新的操作.是否有其他实现,其中两个大整数之间的某些操作的结果存储在其中一个中?
例如,在Java中执行两个大整数的乘法时:创建a * b一个new BigInteger来托管结果.我想存储结果a.
我想这样做是为了提高我的算法的一些情况下的性能
Mak*_*oto 14
如果你能以某种方式做到这一点,我怀疑你的算法的性能会提高,但主要原则BigInteger是不可变的.如果不生成新实例,则无法对其执行操作,并且有充分的理由希望这种行为 - 即,如果您在单个操作上有多个线程BigInteger,则可以放心,这些线程不会BigInteger直接覆盖*.
如果你不希望这种行为,你唯一的选择是创建一个新类,但请记住,你仍然会BigInteger在某个层处理s 的不变性.
*:你知道,只要你没有重新分配变量......
那里有可变的"版本" BigInteger(例如:https://github.com/bwakell/Huldra)或者你可以推出自己的版本.使用可变对象可以降低GC上的压力.您真的应该对应用程序进行基准测试,看看这是否值得付出努力.