1
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;


public class CompareList {
public static void main(String[] args) {
    List<Integer> ArrayList = new ArrayList<Integer>();
    List<Integer> LinkedList = new LinkedList<Integer>();
    doCalculations("ArrayList",ArrayList);
    doCalculations("LinkedList",LinkedList);    
}
private static void doCalculations(String type,List<Integer> List){
    for(int i=0;i<1E5;i++){
        List.add(i);    
    }
    Long start = System.currentTimeMillis();
    /*
     To add elements in the end 
    for(int i=0;i<1E5;i++){
        List.add(i);    
    }
    */
    for(int i=0;i<1E5;i++){
        List.add(0,i);
    }
    Long end = System.currentTimeMillis();
    System.out.println("time taken" +" "+ (end-start) + "ms for" +" "+ type);
}
}

ArrayList の所要時間は 13ms LinkedList の所要時間は 64ms

これは重複した質問であることはわかっていますが、これを削除しないでください。この質問に対する回答が何であれ、理解できませんでした。最後に要素を追加すると、このリンクされたリストが遅くなる理由を誰かが簡単な言葉で説明できますか?

4

2 に答える 2

4

ここで現在行っていることは、マイクロ ベンチマークです。これらのヒントをすべて考慮に入れる必要があるため、これは簡単な作業ではありません。 Java で正しいマイクロベンチマークを作成するにはどうすればよいですか? .

それでも、車輪を再発明する必要はありません。JUnitBenchmarksCaliperなど、この作業を容易にするフレームワークがあり、JUnit テストを使用してコード/アルゴリズムの実際のベンチマークを実行するのに役立ちます。

于 2014-05-15T17:40:12.583 に答える