zoukankan      html  css  js  c++  java
  • for循环和foreach循环效率对比

    package com.baoxing.test;
    
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;
    
    public class TestForEach {
        public static void main(String[] args) {
            //实例化arrayList
                    List<Integer> arrayList = new ArrayList<Integer>();
                    //实例化linkList
                    List<Integer> linkList = new LinkedList<Integer>();
                
                    //插入10万条数据
                    for (int i = 0; i < 100000; i++) {
                        arrayList.add(i);
                        linkList.add(i);
                    }
                    int array = 0;
                    //用for循环arrayList
                    long arrayForStartTime = System.currentTimeMillis();
                    for (int i = 0; i < arrayList.size(); i++) {
                        array = arrayList.get(i);
                    }
                    long arrayForEndTime = System.currentTimeMillis();
                    System.out.println("用for循环arrayList 10万次花费时间:" + (arrayForEndTime - arrayForStartTime) + "毫秒");
                    
                    //用foreach循环arrayList
                    long arrayForeachStartTime = System.currentTimeMillis();
                    for(Integer in : arrayList){
                        array = in;
                    }
                    long arrayForeachEndTime = System.currentTimeMillis();
                    System.out.println("用foreach循环arrayList 10万次花费时间:" + (arrayForeachEndTime - arrayForeachStartTime ) + "毫秒");
                    
                    //用for循环linkList
                    long linkForStartTime = System.currentTimeMillis();
                    int link = 0;
                    for (int i = 0; i < linkList.size(); i++) {
                        link = linkList.get(i);
                    }
                    long linkForEndTime = System.currentTimeMillis();
                    System.out.println("用for循环linkList 10万次花费时间:" + (linkForEndTime - linkForStartTime) + "毫秒");
                    
                    //用froeach循环linkList
                    long linkForeachStartTime = System.currentTimeMillis();
                    for(Integer in : linkList){
                        link = in;
                    }
                    long linkForeachEndTime = System.currentTimeMillis();
                    System.out.println("用foreach循环linkList 10万次花费时间:" + (linkForeachEndTime - linkForeachStartTime ) + "毫秒");
                
    
                            
        }    
    }
    用for循环arrayList 10万次花费时间:7毫秒
    用foreach循环arrayList 10万次花费时间:14毫秒
    用for循环linkList 10万次花费时间:25095毫秒
    用foreach循环linkList 10万次花费时间:11毫秒
    可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。
    
    当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkList时,程序直接卡死。
  • 相关阅读:
    LOJ#3212. 「CSP-S 2019」划分
    矩阵乘法
    SSF信息社团4月训练题目整理
    AtCoder Regular Contest 116
    SSF信息社团3月训练题目整理
    Codeforces Round #704 (Div. 2)
    SSF信息社团寒假训练题目整理(三)
    关于 zzt 得 0.8 分这件事
    Luogu P7244 章节划分
    SSF信息社团寒假训练题目整理(二)
  • 原文地址:https://www.cnblogs.com/cbxBlog/p/9390445.html
Copyright © 2011-2022 走看看