java for循环时间最短_Java For循环vs While循环,奇怪的行为和时间性能

我正在编写一个算法,它在整个数组中从一端到一开始做一个大循环,里面有一个if条件 . 在条件第一次为假时,可以终止循环 .

因此,对于for循环,如果condition为false,则继续使用简单变量进行迭代 . 使用带有条件while参数的while循环,循环将在条件为false时停止并且应该保存一些迭代 .

但是,while循环仍然比for循环慢一点!

但是,如果我将一个int值作为计数器,并计算迭代次数,For循环按预期执行了更多的迭代 . 但是这次,使用计数器执行mofified For方法的时间比使用计数器的while方法慢得多!

有什么解释吗?

这里带有for循环的代码:

for (int i = pairs.length - 1; i >= 0; i -= 2) {

//cpt++;

u = pairs[i];

v = pairs[i - 1];

duv = bfsResult.distanceMatrix.getDistance(u, v);

if (duv > delta) {

execute();

}

}

时间执行:6473

用计数器执行时间:8299

迭代计数:2584401

这里是while循环的代码:

int i = pairs.length - 1;

u = pairs[i];

v = pairs[i - 1];

duv = bfsResult.distanceMatrix.getDistance(u, v);

while (duv > delta) {

//cpt++;

execute();

u = pairs[i -= 2];

v = pairs[i - 1];

duv = bfsResult.distanceMatrix.getDistance(u, v);

}

时间执行:6632

用计数器执行时间:7163

迭代计数:9793

时间以毫秒为单位,我用不同的大小重复实验几次,措施几乎保持不变 . execute()方法更新delta值 . 方法getDistance()只是一个矩阵int [] []访问 .

谢谢你的帮助 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值