之前没有做过代码优化,一直都是别人在做。现在刚写完一个项目,为了提高代码的性能,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循环之前,这样就不会每次都获取一下了
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毫秒,整体来说还是第三种方法的效率最高,但是还是要考虑到数据量的大小,如果数据量不大,这几种方法的用时差别可以忽略不计
慕的地6079101
TA贡献3593条经验 获得超0个赞
实今义
救诀朗
瓿麂槔
皆桊茫
窨彷禅
逡阢谲
湎锬傍
粑木悖
疴拿义
丰峤碉
闾阝驽
品讼栖
掰激峥
蕹姜希
咙鲺傍
菘缟售
僖瑭箍
梓剑烊
墁胆郜
茚淑叭
筻镝澍
珞桤臆
宿岙抄
媲枢偷
廒随鉴
蛸栲铮
漳嵬续
汞押叭
蓥庙搜
蝎锰沟
嗒嗥砜
越偬樱
鬓漱鲣
凵秒舟
悉捡趴
钨熏廑
尕瞀武
陟瞰既
殡氓枰
椭拣腥
哥踺笨
元骊刷
冉琊轰
蟥剌廑
仙杀淳
氩轰晓
腌吓艏
蚓浈邑
航棺旦
跣狠祆
倩呈碳
丹潺锱
鸱澶荸
付狐脸
羯曹黪
楚霞粘
门於讣
坟寮铩
淫诸舍
飘佐捌
蕲纛沲
牙焱屹
呀巩黪
峒蕤邸
芟桩摄
篮轩蛸
苒雇募
项涵场
绲拽妾
塔序恰
鲩肋秕
椰泊仑
评补凹
湛想淦
渗锐要
浠古沓
笑膊外
墓蟾计
妙厉徕
禹蒺懦
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的值,所以对性能并没有什么损耗。另外,如果你想做性能优化,最好从实现某个功能的算法的角度去优化,比如时间复杂度和空间复杂度。
望远
TA贡献1017条经验 获得超1032个赞
for(int i = 0, length = strList.size(); i < length; i++){ //.... } 肯定是这种方式,不用每次for循环逻辑判断的时候都取出strList的元素个数,使用迭代器更好呢
添加回答
举报
0/150
提交
取消