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

在下面的一篇文章:

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

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

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

先看看我做的测试程序:

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

代码部分:

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

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

 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.

1 int length = 10;

b.

1 int length = 100;

c.

1 int length = 1000;

d.

1 int length = 10000;

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

1 for(int i = 0;i<list.size();i++)

要比

1 for(int i =0,len = list.size();i< len;i++)

程序要快...

 

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

More reading,and english is important.

I'm Hongten

 

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
Hongten博客排名在100名以内。粉丝过千。
Hongten出品,必是精品。

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

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

posted @ 2013-03-08 18:28  Hongten  阅读(2218)  评论(12编辑  收藏  举报
Fork me on GitHub