對"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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM