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時,程序直接卡死。

 


免責聲明!

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



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