效率与简洁书写之争,求解释

李荣强 2012-08-19 04:37:06
13. 尽量减少对变量的重复计算


for(int i=0;i<list.size();i++)
应该改为
for(int i=0,len=list.size();i<len;i++)
并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
上面 这段是在博客上看到的;
表示我每次用的都是上面的那个,这个效率真的比下面的低———— 问题 1
实际开发中会用哪种呢?——————————————————— 问题2
还有下面两种写法有什么区别么———————————————— 问题3
实际开发中用哪个—————————————————————— 问题4
for(int i=0;i!=60;i++)
{

}
for (int i=0;i<60;i++)
{

}
这两个的区别跟上面那两个的区别是相同的么?——————————问题5
...全文
195 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
李荣强 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

精华往往在评论
[/Quote]看了那篇博客,受益匪浅,多谢四哥!!!
李荣强 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

for(int i=0;i!=60;i++)
{

}
for (int i=0;i<60;i++)
{

}

这两个的区别引用网上流行的就是2B青年与文艺青年的区别。

再给你举个简单的例子:
你是一个男人,
你是喜欢别人直接说你是个男人呢还是喜欢别人说你不是女人?
能明白我想表达的什么了不?
[/Quote]虽然你说的很有道理,可是我还是有个疑问,判断条件时,我只要看它等不等,至于大于还是小于我不管,这样不是更快点么,或者说这两者底层之间有什么关系,是小于,大于底层调用了不等于,等于,还是等于不等于底层调用了小于,大于。我这个人比较喜欢钻牛角尖哈。。。
菖蒲老先生 2012-08-23
  • 打赏
  • 举报
回复
!= 肯定比 < 来的快,
可又能快多少呢,一般情况下忽略不计。
李荣强 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

如果list 是LinkedList并且,size很大,比如100万的话
你两段代码,一样慢

Java code
int index = 0; // 如果需要下标的话
for (X x : list) {
...
index++;
}
[/Quote]嗯嗯,如果是这样的话,就用ArrayList了,谢了
李荣强 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

for(int i=0;i<list.size();i++)这个每次循环都要调用list.size()方法后进行比较,
而for(int i=0,len=list.size();i<len;i++),只调用了一次list.size()将值赋给len,那你说是调用list.size()方法取值快呢还是直接从len中取值快呢
[/Quote]嗯嗯,正解
李荣强 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

!= 肯定比 < 来的快,
可又能快多少呢,一般情况下忽略不计。
[/Quote]快和慢是对比出来的,既然是更快就用它了,谢了!!!
YECHWNG 2012-08-22
  • 打赏
  • 举报
回复
找平衡点就行了,而且每个项目都不一样,看项目选方法
walkman_22 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
for(int i=0;i<list.size();i++)这个每次循环都要调用list.size()方法后进行比较,
而for(int i=0,len=list.size();i<len;i++),只调用了一次list.size()将值赋给len,那你说是调用list.size()方法取值快呢还是直接从len中取值快呢
[/Quote]
精华往往在评论
shine333 2012-08-21
  • 打赏
  • 举报
回复
如果list 是LinkedList并且,size很大,比如100万的话
你两段代码,一样慢

int index = 0; // 如果需要下标的话
for (X x : list) {
...
index++;
}
kissky1413 2012-08-21
  • 打赏
  • 举报
回复
for(int i=0;i!=60;i++)
{

}
for (int i=0;i<60;i++)
{

}

这两个的区别引用网上流行的就是2B青年与文艺青年的区别。

再给你举个简单的例子:
你是一个男人,
你是喜欢别人直接说你是个男人呢还是喜欢别人说你不是女人?
能明白我想表达的什么了不?
shihun1234 2012-08-20
  • 打赏
  • 举报
回复
for(int i=0;i<list.size();i++)这个每次循环都要调用list.size()方法后进行比较,
而for(int i=0,len=list.size();i<len;i++),只调用了一次list.size()将值赋给len,那你说是调用list.size()方法取值快呢还是直接从len中取值快呢
小牛毛 2012-08-19
  • 打赏
  • 举报
回复
我也求解
龙四 2012-08-19
  • 打赏
  • 举报
回复
精华往往在评论

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧