fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone {
  9. public static final int NUMBER_ELEMENTS = 20_000;
  10.  
  11. public static double measureTime(Runnable runnable) {
  12. long start = System.nanoTime();
  13. runnable.run();
  14. long end = System.nanoTime();
  15. return (end - start) / 1e9;
  16. }
  17.  
  18. private static void insertUsingAdd() {
  19. List<Integer> list = new LinkedList<>();
  20. for (int i = 0; i < NUMBER_ELEMENTS; i++) {
  21. list.add(list.size() / 2, i + 1);
  22. }
  23. }
  24.  
  25. private static void insertUsingIterator() {
  26. List<Integer> list = new LinkedList<>();
  27. ListIterator<Integer> iterator = list.listIterator();
  28. for (int i = 0; i < NUMBER_ELEMENTS; i++) {
  29. iterator.add(i + 1);
  30. if (i % 2 == 0) {
  31. iterator.previous();
  32. }
  33. }
  34. }
  35.  
  36. public static void main(String[] args) {
  37. for (int i = 0; i < 10; i++) {
  38. // разогрев
  39. measureTime(Ideone::insertUsingIterator);
  40. measureTime(Ideone::insertUsingAdd);
  41. }
  42.  
  43. System.out.printf("iterator: %.4f seconds\n", measureTime(Ideone::insertUsingIterator));
  44. System.out.printf("add: %.4f seconds\n", measureTime(Ideone::insertUsingAdd));
  45. }
  46. }
Success #stdin #stdout 2.57s 4386816KB
stdin
Standard input is empty
stdout
iterator: 0.0004 seconds
add:      0.2168 seconds