有没有一种方法可以通过缓存来提高BigInteger
的性能?
当你对BigInteger
进行操作时,它总是创建一个新的BigInteger
。例如,当您乘以两个大整数时,会创建一个新的BigInteger
来保存结果。我想使用某种可变版本的BigInteger
,它将使用结果更新其中一个字段。
有没有一种方法可以通过缓存来提高BigInteger
的性能?
当你对BigInteger
进行操作时,它总是创建一个新的BigInteger
。例如,当您乘以两个大整数时,会创建一个新的BigInteger
来保存结果。我想使用某种可变版本的BigInteger
,它将使用结果更新其中一个字段。
我怀疑如果你以某种方式这样做,你的算法性能不会有所提高,但主要原则是BigInteger
是不可变的。你无法在不生成新实例的情况下对其执行操作,这是有好的理由希望它有这种行为 - 即,如果您有多个线程操作单个BigInteger
,您可以放心这些线程不会直接覆盖该BigInteger
。
如果您不想要此行为,则唯一的选择是创建一个新类,但请记住,您仍然将在某个层面上处理BigInteger
的不可变性。
*:就像长时间不重新分配变量一样...
有可变的 BigInteger
版本存在(例如:https://github.com/bwakell/Huldra),或者你可以自己编写。使用可变对象可能会减少垃圾回收器的压力。你真的应该对你的应用程序进行基准测试,以确定是否值得这样做。
class MutableBigInteger {
BigInteger n;
public MutableBigInteger add (MutableBigInteger n) {
this.n = this.n.add(n.n);
return this;
}
}
BigInteger
。你想要解决的性能瓶颈是什么? - Tunaki