Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. import static java.util.function.UnaryOperator.identity;
  2. import static java.util.stream.Collectors.toMap;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.List;
  7. import java.util.LongSummaryStatistics;
  8. import java.util.Map;
  9. import java.util.stream.IntStream;
  10.  
  11. public class Simulator {
  12. public static void main(String... args) {
  13. Map<Integer, Integer> originalMap = IntStream.range(0, 10_000_000).boxed().collect(toMap(identity(), identity()));
  14. //Map<Integer, Integer> unmodifiableMap = java.util.Collections.unmodifiableMap(new java.util.HashMap<>(originalMap));
  15. Map<Integer, Integer> unmodifiableMap = com.google.common.collect.ImmutableMap.copyOf(originalMap);
  16.  
  17. List<Integer> keys = new ArrayList<>(unmodifiableMap.keySet());
  18.  
  19. int n = 20;
  20. long[] computationTimes = new long[n];
  21. for (int i = 0; i < n; i++) {
  22. long start = System.currentTimeMillis();
  23. computeSolution(keys, unmodifiableMap);
  24. long end = System.currentTimeMillis();
  25. computationTimes[i] = end - start;
  26. System.out.printf("Answer computed in %.3f s%n", (end - start) / 1000.0);
  27. }
  28.  
  29. LongSummaryStatistics stats = Arrays.stream(computationTimes).collect(LongSummaryStatistics::new, LongSummaryStatistics::accept, LongSummaryStatistics::combine);
  30. double avgComputationTime = ((stats.getSum() - (stats.getMax() + stats.getMin())) / (double) stats.getCount()) / 1000;
  31. System.out.printf("(Avg) Answer computed in %.3f s%n", avgComputationTime);
  32. }
  33.  
  34. private static void computeSolution(List<Integer> keys, Map<Integer, Integer> map) {
  35. for (int i = 0; i < 15; i++) {
  36. for (Integer key : keys) {
  37. map.get(key);
  38. }
  39. }
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement