我写了一个简单,其中一个看似普通的循环却出乎了我的意料,是用Java写的。其中yz及pow的底数我现在改了一下:
Java代码 收藏代码
//方法一:
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(进行了多次测试取平均)
我现在不知道到底是什么原因,所以上来请教讨论一下,谢谢各位!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
方法一中的循环体实际计算次数要比方法二少吧,所以就快; 算法时间主要花在了计算Math.pow和两次乘法,循环本身的时间比计算时间少很多 因为方法一有计算条件的约束所以计算时间就少花了很多