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

JAVA代码,for循环的优化?

JAVA代码,for循环的优化?

qq_L_387 2017-05-18 10:38:32
之前没有做过代码优化,一直都是别人在做。现在刚写完一个项目,为了提高代码的性能,for循环应该用这两个哪一个比较好。for(int i = 0; i< strList.size(); i++){}还有一个for(int i = 0, length = strList.size(); i < length; i++){} 对于整体性能和服务器上代码的运行速度来说哪一个比较好?
查看完整描述

2 回答

?
qq_JackFrost_0

TA贡献2条经验 获得超2个赞

其实你写的这两种方法都是一样的,都是每次循环都要执行一次查询出strList的大小,如果你想优化一下就可以把length=strList.size()放到for循环之前,这样就不会每次都获取一下了

查看完整回答
1 反对 回复 2017-05-18
?
yanrun

TA贡献317条经验 获得超240个赞

//我记得好像很多这么写的
int len = strList.size();
for(int i = 0; i< len; i++){
    //dosomething
}

这么写不用每次循环都计算strList.size(),可以提升一定的性能但是如果数据量不是很大的话提升也不会太明显

刚做了一下实验,循环打印100万条数据(从0到999999)第一种方法最高耗时5819毫秒,最短耗时5788毫秒,平均耗时5809.9毫秒,第二种方法最高耗时5850毫秒,最短耗时5755毫秒,平均耗时5796.7毫秒,第三种方法最高耗时5833毫秒,最短耗时5763毫秒,平均耗时5788.3毫秒,整体来说还是第三种方法的效率最高,但是还是要考虑到数据量的大小,如果数据量不大,这几种方法的用时差别可以忽略不计

查看完整回答
1 反对 回复 2017-05-18
?
botao555

TA贡献48条经验 获得超46个赞

其中两种方式的性能是完全一样的,不要认为第一种方式每次循环都调用了一下size()方法就觉得性能偏低了,看下size的源码就知道了:

 /**
     * Returns the number of elements in this list.
     *
     * @return the number of elements in this list
     */
    public int size() {
        return size;
    }

调用size()直接返回了成员变量size的值,所以对性能并没有什么损耗。另外,如果你想做性能优化,最好从实现某个功能的算法的角度去优化,比如时间复杂度和空间复杂度。

查看完整回答
1 反对 回复 2017-05-18
?
sr_ll

TA贡献2条经验 获得超0个赞

第二个

查看完整回答
反对 回复 2017-05-18
?
望远

TA贡献1017条经验 获得超1032个赞

for(int i = 0, length = strList.size(); i < length; i++){
    //....
}
肯定是这种方式,不用每次for循环逻辑判断的时候都取出strList的元素个数,使用迭代器更好呢


查看完整回答
反对 回复 2017-05-18
  • 2 回答
  • 0 关注
  • 3170 浏览

添加回答

举报

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