0

Here is a sample code:

    Set<Integer> hashSet = new HashSet<>();
    Set<Integer> linkedHashSet = new HashSet<>();

    for(int i = 0; i < 1000; i++){
        hashSet.add(i);
        linkedHashSet.add(i);
    }

    Long startTimeHashSet = System.nanoTime();
    for(Integer i: hashSet){

    }
    Long endTimeHashSet = System.nanoTime();
    System.out.println("HashSet Time:" + (endTimeHashSet - startTimeHashSet));

    Long startTimeLinkedHashSet = System.nanoTime();
    for(Integer i: linkedHashSet){

    }
    Long endTimeLinkedHashSet = System.nanoTime();
    System.out.println("Linked HashSet Time:" + (endTimeLinkedHashSet - startTimeLinkedHashSet));

The output is:

HashSet Time:721774
Linked HashSet Time:132613

Why does this happen?

Pritam Banerjee
  • 17,953
  • 10
  • 93
  • 108
  • 1
    Your benchmark suffers from 2 of the standard problems of naive Java benchmarking. 1) It does not account for JVM warmup. 2) The loops *could be* optimized away. – Stephen C Sep 08 '17 at 04:22
  • 1
    I tweaked your code to address the warmup problem, and the true performance difference is minimal. – Stephen C Sep 08 '17 at 04:28

0 Answers0