第一次for循环要花很多时间而不是第二次的原因是什么?

时间:2019-02-25 09:05:23

标签: java memory operating-system

如今,我正在致力于代码的优化,我看到很多代码,我们在其中创建一个新变量,然后如以下示例代码中的第一个循环所示进行初始化:code example

BigInteger limit = new BigInteger("10000");
long l = System.currentTimeMillis();
for (BigInteger i = BigInteger.ONE; i.compareTo(limit) < 0; i = i.add(BigInteger.ONE))
{
    BigDecimal temp = new BigDecimal(0);
}
long l1 = System.currentTimeMillis();

//After modification
BigDecimal temp1;
for (BigInteger i = BigInteger.ONE; i.compareTo(limit) < 0; i = i.add(BigInteger.ONE))
{
    temp1 = new BigDecimal(0);
}
long l2 = System.currentTimeMillis();
System.out.println("1st loop time: "+(l1-l)/1000.0);
System.out.println("2nd loop time: "+(l2-l1)/1000.0);

然后第二步,我做了一些修改,如图所示。我的问题看起来都很熟悉,只是可变范围不同,但是第一个循环需要很多时间。

  • 这是否仅由于内存分配而发生?还是在for循环外声明变量的好方法,但是为什么呢?

0 个答案:

没有答案