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时,程序直接卡死。
  • 相关阅读:
    redis限流器的设计
    使用HystrixCommand封装http请求
    自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
    通用的规则匹配算法(原创)(java+.net)
    redis缓存切面实现(支持缓存key的spel表达式)
    使用join和CountDownLatch来等待线程结束
    shell日常实战练习——通过监视用户登陆找到入侵者
    Nginx web服务器
    nginx——防盗链功能
    nginx 隐藏nginx版本号
  • 原文地址:https://www.cnblogs.com/cbxBlog/p/9390445.html
Copyright © 2011-2022 走看看