Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import static java.util.function.UnaryOperator.identity;
- import static java.util.stream.Collectors.toMap;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.LongSummaryStatistics;
- import java.util.Map;
- import java.util.stream.IntStream;
- public class Simulator {
- public static void main(String... args) {
- Map<Integer, Integer> originalMap = IntStream.range(0, 10_000_000).boxed().collect(toMap(identity(), identity()));
- //Map<Integer, Integer> unmodifiableMap = java.util.Collections.unmodifiableMap(new java.util.HashMap<>(originalMap));
- Map<Integer, Integer> unmodifiableMap = com.google.common.collect.ImmutableMap.copyOf(originalMap);
- List<Integer> keys = new ArrayList<>(unmodifiableMap.keySet());
- int n = 20;
- long[] computationTimes = new long[n];
- for (int i = 0; i < n; i++) {
- long start = System.currentTimeMillis();
- computeSolution(keys, unmodifiableMap);
- long end = System.currentTimeMillis();
- computationTimes[i] = end - start;
- System.out.printf("Answer computed in %.3f s%n", (end - start) / 1000.0);
- }
- LongSummaryStatistics stats = Arrays.stream(computationTimes).collect(LongSummaryStatistics::new, LongSummaryStatistics::accept, LongSummaryStatistics::combine);
- double avgComputationTime = ((stats.getSum() - (stats.getMax() + stats.getMin())) / (double) stats.getCount()) / 1000;
- System.out.printf("(Avg) Answer computed in %.3f s%n", avgComputationTime);
- }
- private static void computeSolution(List<Integer> keys, Map<Integer, Integer> map) {
- for (int i = 0; i < 15; i++) {
- for (Integer key : keys) {
- map.get(key);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement