• 对"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

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

  • 相关阅读:
    CodeForces-455A Boredom
    UVA-12627 Erratic Expansion
    汉诺塔系列问题
    CodeForces-999D Equalize the Remainders
    CodeForces-1061D TV Shows
    CodeForces-1061B Views Matter
    UVALive-7261 Xiongnu's Land
    HDU-4990 Reading comprehension
    -------------------------------用MyBatis处理表与表之间的关联关系----------------------------------
    -------------计算机里面算法-----------
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_fors.html
Copyright © 2020-2023  润新知