Я хочу, чтобы проверить время добавления и получения элемента в простом и родового HashMap:Неудачное время выполнения метода
public void TestHashGeneric(){
Map hashsimple = new HashMap();
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
hashsimple.put("key"+i, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
}
for (int i = 0; i < 100000; i++) {
String ret =(String)hashsimple.get("key"+i);
}
long endTime =System.currentTimeMillis();
System.out.println("Hash Time " + (endTime - startTime) + " millisec");
Map<String,String> hm = new HashMap<String,String>();
startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
hm.put("key"+i, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
}
for (int i = 0; i < 100000; i++) {
String ret = hm.get("key"+i);
}
endTime = System.currentTimeMillis();
System.out.println("Hash generic Time " + (endTime - startTime) + " millisec");
}
Проблема заключается в том, что я получаю другое время, если я поменять местами между кодом раздела HashMap в! Если я поставил петли (со сроком печати) общего числа ниже простого, я получаю лучшее время для родового, и если я стану простым ниже общего, я получаю лучшее время для простого!
То же самое происходит, если я использую для этого разные методы.
Пожалуйста, отредактируйте свой вопрос, чтобы он приобрел больше смысла - на данный момент его очень трудно понять. Пожалуйста, прочитайте http://tinyurl.com/so-hints –
Вопрос не ясен. Вы говорите, что у вас есть две якобы совершенно несвязанные части кода, а вторая, которая работает во втором, работает быстрее (наоборот, когда вы переключаете свой порядок)? Может быть JIT на работе, помимо всего прочего. Возможно, «разогрейте» обе части и выполните тайминги после этого. – Thilo
Но я могу сказать вам следующее: дженерики оказывают нулевое влияние на производительность исполнения. Это чисто компиляция. – Thilo