Я попытался создать свою собственную карту, чтобы повысить производительность для специальной среды, и я понял кое-что довольно интересное: создание new Hashmap<Integer,String>(2000)
выполняется быстрее, чем new Object[2000]
- независимо от того, в каком порядке я выполняю эти команды. Это довольно запутанно для меня, особенно. потому что конструктор Hashmap содержит table = new Entry[capacity]
, согласно this. Что-то не так с моим testbench?
public static void test(int amm){ //amm=1_000_000
Map<Integer,String> m1 = null;
Object[] arr = null;
long time = System.nanoTime();
for(int i = 0; i < amm; i++){
m1 = new HashMap<Integer, String>(2000);
}
System.out.println("m1: " + (System.nanoTime() - time)); //m1: 70_455_065
time = System.nanoTime();
for(int i = 0; i < amm; i++){
arr = new Object[2000];
}
System.out.println("arr: " + (System.nanoTime() - time)); //arr: 1_322_473_803
}
Мне бы хотелось увидеть результаты тестирования на другом компьютере. Я не знаю, почему создание HashMap
в 10 раз быстрее, чем создание Object[]
.