我写了一个简单的阶乘程序,具备任意精度:
public class Fac {
public static void main(String[] args) {
int stop = 100000;
long start = System.currentTimeMillis();
BigInteger integer = new BigInteger("1");
for(int i = 2; i <= stop; i++){
integer = integer.multiply(new BigInteger(i +""));
}
System.out.println("It took: " + (System.currentTimeMillis() - start) + "ms");
//System.out.println(integer);
}
}
当我在IntelliJ中运行它时:
It took: 5392ms
当我在命令行中运行它:
It took: 17919ms
命令行由以下方式运行:
javac Fac.java
java Fac
我知道这不是衡量时间的最佳方式,但差距如此之大以至于并不重要。为什么性能会有如此大的差异呢?
其他人也注意到了类似的差异,然而据我所知,他们的结论似乎与我的情况无关。