前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对"for循环中尽量减少对变量的重复计算"提出质疑

对"for循环中尽量减少对变量的重复计算"提出质疑

作者头像
Hongten
发布2018-09-13 15:15:41
9030
发布2018-09-13 15:15:41
举报
文章被收录于专栏:Hongten

在下面的一篇文章:

26个提升java性能需要注意的地方

的"13. 尽量减少对变量的重复计算"中描述的:

我有以下的质疑!!如果有不对的地方,请大家拍砖...^_^

先看看我做的测试程序:

===========================================================

代码部分:

===========================================================

/java_test/src/com/b510/fors/TestFor.java

代码语言:javascript
复制
 1 package com.b510.fors;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 /**
 7  * 13. 尽量减少对变量的重复计算?
 8  * @author hongten<br>
 9  * <a href="http://www.admin10000.com/document/1070.html">26个提升java性能需要注意的地方</a>
10  */
11 public class TestFor {
12 
13     public static void main(String[] args) {
14         int length = 10000;
15         List<String> list = new ArrayList<String>();
16         
17         for(int i = 0,len = length;i< len;i++){
18             list.add(String.valueOf(i));
19         }
20         
21         long testFor = testFor(list);
22         long testFors = testFors(list);
23         
24         
25         System.out.println("the result is following....");
26         System.out.println("提倡方法 -- > testfor : "+testFor);
27         System.out.println("================");
28         System.out.println("不提倡方法 -- > testFors : "+testFors);
29     }
30     
31     /**
32      * <a href="http://www.admin10000.com/document/1070.html">26个提升java性能需要注意的地方</a><br>
33      * 中提倡的方法
34      * @param list
35      * @return
36      */
37     public static long testFor(List<String> list){
38         long begin = System.currentTimeMillis();
39         for(int i =0,len = list.size();i< len;i++){
40             System.out.println(list.get(i).toString());
41         }
42         long end = System.currentTimeMillis();
43         return (end - begin);
44     }
45     
46     /**
47      * <a href="http://www.admin10000.com/document/1070.html">26个提升java性能需要注意的地方</a><br>
48      * 中不提倡的方法
49      * @param list
50      * @return
51      */
52     public static long testFors(List<String> list){
53         long begin = System.currentTimeMillis();
54         for(int i = 0;i<list.size();i++){
55             System.out.println(list.get(i).toString());
56         }
57         long end = System.currentTimeMillis();
58         return (end - begin);
59     }
60 }

运行效果:

a.

代码语言:javascript
复制
1 int length = 10;

b.

代码语言:javascript
复制
1 int length = 100;

c.

代码语言:javascript
复制
1 int length = 1000;

d.

代码语言:javascript
复制
1 int length = 10000;

总结:测试了很多数据,表示

代码语言:javascript
复制
1 for(int i = 0;i<list.size();i++)

要比

代码语言:javascript
复制
1 for(int i =0,len = list.size();i< len;i++)

程序要快...

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-03-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档