fork download
  1. import java.util.ArrayList;
  2.  
  3. class Ideone {
  4.  
  5. public static final int LIST_SIZE = 1000;
  6. public static final ArrayList<Integer> list = new ArrayList<>(LIST_SIZE);
  7.  
  8. static {
  9. final Integer content = Integer.valueOf(1);
  10. for (int i = LIST_SIZE; i > 0; --i) {
  11. list.add(content);
  12. }
  13. }
  14.  
  15. static int doArrayIterator() {
  16. int result = 0;
  17. for (final Integer i : list) {
  18. result += i;
  19. }
  20. return result;
  21. }
  22.  
  23. static int doArrayIndex() {
  24. int result = 0;
  25. for (int i = 0; i < LIST_SIZE; ++i) {
  26. result += list.get(i);
  27. }
  28. return result;
  29. }
  30.  
  31. public static void main(String[] args) throws InterruptedException {
  32. final int RUNS = 100000;
  33.  
  34. int sum = 0;
  35. for (int i = 0; i < RUNS; ++i) {
  36. sum += doArrayIterator();
  37. sum += doArrayIndex();
  38. }
  39. System.out.println("Warmup done: " + sum);
  40.  
  41. sum = 0;
  42. long timeStart = System.nanoTime();
  43. for (int i = 0; i < RUNS; ++i) {
  44. sum += doArrayIterator();
  45. }
  46. final long timeIterator = System.nanoTime() - timeStart;
  47.  
  48. sum = 0;
  49. timeStart = System.nanoTime();
  50. for (int i = 0; i < RUNS; ++i) {
  51. sum += doArrayIterator();
  52. }
  53. final long timeIndex = System.nanoTime() - timeStart;
  54.  
  55. final double timePIterator = ((double) timeIterator) / ((double) Math.max(timeIterator, timeIndex)) * 100.0;
  56. final double timePIndex = ((double) timeIndex) / ((double) Math.max(timeIterator, timeIndex)) * 100.0;
  57. System.out.println(String.format("%-10s %d %10d ns %6.2f%%", "Iterator:", sum, timeIterator, timePIterator));
  58. System.out.println(String.format("%-10s %d %10d ns %6.2f%%", "Index:", sum, timeIndex, timePIndex));
  59. }
  60. }
  61.  
Success #stdin #stdout 3.87s 380352KB
stdin
Standard input is empty
stdout
Warmup done: 200000000
Iterator:  100000000 1109326391 ns  99.47%
Index:     100000000 1115199424 ns 100.00%