import java.util.ArrayList;

class Ideone {

  public static final int LIST_SIZE = 1000;
  public static final ArrayList<Integer> list = new ArrayList<>(LIST_SIZE);

  static {
    final Integer content = Integer.valueOf(1);
    for (int i = LIST_SIZE; i > 0; --i) {
      list.add(content);
    }
  }

  static int doArrayIterator() {
    int result = 0;
    for (final Integer i : list) {
      result += i;
    }
    return result;
  }

  static int doArrayIndex() {
    int result = 0;
    for (int i = 0; i < LIST_SIZE; ++i) {
      result += list.get(i);
    }
    return result;
  }

  public static void main(String[] args) throws InterruptedException {
    final int RUNS = 100000;

    int sum = 0;
    for (int i = 0; i < RUNS; ++i) {
      sum += doArrayIterator();
      sum += doArrayIndex();
    }
    System.out.println("Warmup done: " + sum);

    sum = 0;
    long timeStart = System.nanoTime();
    for (int i = 0; i < RUNS; ++i) {
      sum += doArrayIterator();
    }
    final long timeIterator = System.nanoTime() - timeStart;

    sum = 0;
    timeStart = System.nanoTime();
    for (int i = 0; i < RUNS; ++i) {
      sum += doArrayIterator();
    }
    final long timeIndex = System.nanoTime() - timeStart;

    final double timePIterator = ((double) timeIterator) / ((double) Math.max(timeIterator, timeIndex)) * 100.0;
    final double timePIndex = ((double) timeIndex) / ((double) Math.max(timeIterator, timeIndex)) * 100.0;
    System.out.println(String.format("%-10s %d %10d ns %6.2f%%", "Iterator:", sum, timeIterator, timePIterator));
    System.out.println(String.format("%-10s %d %10d ns %6.2f%%", "Index:", sum, timeIndex, timePIndex));
  }
}
