2014-02-18 35 views
0

我想創建方法來查看創建10000個ArrayListLinkedList需要多少時間。我在找什麼?通過在ArrayList和LinkedList上插入操作所花費的時間測量

public class Solution 
{ 
    public static void main(String[] args) 
    { 
     System.out.println(getTimeMsOfInsert(new ArrayList())); 

     System.out.println(getTimeMsOfInsert(new LinkedList())); 
    } 

    public static long getTimeMsOfInsert(List list) 
    { 
     insert10000(list); 
    } 

    public static void insert10000(List list) 
    { 
     for (int i=0;i<10000;i++) 
     { 
      list.add(0, new Object()); 
     } 
    } 
} 
+0

您的代碼不編譯......而你永遠不會採取行動的時間... –

+0

你可以使用一個分析器(NetBeans的自帶profiler)或者用戶System.nanoTime()來做你自己的分析 –

+0

另外,在啓動一個微型基準測試之前閱讀這個是很重要的:http://stackoverflow.com/q/504103/1065197 –

回答

3

您的代碼有compilation errors,所以我固定的他們,並加入了一些代碼可以幫助你。

,所以你可以這樣做:

public class Solution{ 

public static void main(String[] args) { 
    System.out.println(getTimeMsOfInsert(new ArrayList())); 
    System.out.println(getTimeMsOfInsert(new LinkedList())); 
} 

public static long getTimeMsOfInsert(List list) { 
    return getInsertTime(list); 
} 

public static long getInsertTime(List list) { 
    long start = System.currentTimeMillis(); 
    for (int i = 0; i < 10000; i++) { 
     list.add(new Object()); 
    } 
    return System.currentTimeMillis() - start; 
} 
} 
+0

請勿使用'System.currentTimeMillis()'測量已用時間。當系統的時鐘正在被調整時,這個時鐘可能會跳 - 甚至是向後 - 例如,通過NTP。使用['System.nanoTime()'](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime())來測量已用時間。 – Holger

+0

@Holger感謝您的提示。 – Salah

相關問題