为了账号安全,请及时绑定邮箱和手机立即绑定

Java的一个循环效率问题

Java的一个循环效率问题

拉风的咖菲猫 2019-03-29 22:19:12
我写了一个简单,其中一个看似普通的循环却出乎了我的意料,是用Java写的。其中yz及pow的底数我现在改了一下://方法一: double w = 0.0, yz = 1.234567; for (int i = 0; i < currents.length; i++) {     if (currents[i] > i2) {         w += yz * currents[i] * Math.pow(1.56, i0/currents[i]);     } } return w; //方法二: double w = 0.0, yz = 1.234567; for (int i = pMax; i < currents.length; i++) {     w += yz * currents[i] * Math.pow(0.89, i0/currents[i]); } return w; 代码如上,现在问题就是照我的理解方法二应该比方法一快一些才对,而进行了测试方法一需要114ms,方法二需要333ms(进行了多次测试取平均)我现在不知道到底是什么原因,所以上来请教讨论一下,谢谢各位!- -|||  没分
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

方法一中的if (currents[i] > i2) 这句,满足这个条件才会进去计算。


查看完整回答
反对 回复 2019-04-30
?
富国沪深

TA贡献1790条经验 获得超9个赞

两个方法所消耗的时间主要是用在计算上面,虽然第一个if判断比第二多,但是他真正计算的时间比第二方法少,总体来看肯定是第一个方法时间消耗少。其实你可以通过循环的次数从小到大,依次去比较两个方法消耗的时间,应该可以画出一个正太分布图。肯定会有一个临界点,两个方法的时间一样,通过这个可以分析出你想要的结果


查看完整回答
反对 回复 2019-04-30
  • 3 回答
  • 0 关注
  • 596 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信