java程序效率_Java效率

我正在玩一些代码,计算出一些

Java代码计算所需的时间,以获得一些Java功能的效率或低效率.这样做我现在卡住了一些非常奇怪的效果,我根本无法解释自己.也许有人可以帮助我了解它.

public class PerformanceCheck {

public static void main(String[] args) {

List removeList = new LinkedList();

int maxTimes = 1000000000;

for (int i=0;i<10;i++) {

long time = System.currentTimeMillis();

for (int times=0;times

// PERFORMANCE CHECK BLOCK START

if (removeList.size() > 0) {

testFunc(3);

}

// PERFORMANCE CHECK BLOCK END

}

long timeNow = System.currentTimeMillis();

System.out.println("time: " + (timeNow - time));

}

}

private static boolean testFunc(int test) {

return 5 > test;

}

}

开始这个结果是相对较长的计算时间(记住removeList是空的,所以testFunc甚至不调用):

time: 2328

time: 2223

...

而替换任何组合的removeList.size()> 0和testFunc(3)与其他任何东西都有更好的结果.例如:

...

if (removeList.size() == 0) {

testFunc(3);

}

...

结果(testFunc每一次调用):

time: 8

time: 7

time: 0

time: 0

即使调用这两个函数彼此独立,导致较低的计算时间:

...

if (removeList.size() == 0);

testFunc(3);

...

结果:

time: 6

time: 5

time: 0

time: 0

...

在我的初始例子中只有这种特殊的组合需要很长时间.这很刺激我,我真的很想了解它.有什么特别的?

谢谢.

加成:

在第一个例子中更改testFunc()

if (removeList.size() > 0) {

testFunc(times);

}

像别的东西

private static int testFunc2(int test) {

return 5*test;

}

会导致再次快.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值