Оптимизация Java, выгода от hashMap? - PullRequest
1 голос
/ 30 октября 2009

Мне дали немного прекрасного Java-кода, который имеет много подобных вещей (в цикле, который выполняется около 1,5 миллионов раз).

code = getCode();
for (int intCount = 1; intCount < vA.size() + 1; intCount++)
{
   oA = (A)vA.elementAt(intCount - 1);
   if (oA.code.trim().equals(code))
       currentName= oA.name;
}

Могу ли я увидеть значительное увеличение скорости от переключения на что-то вроде следующего

code = getCode();
//AMap is a HashMap
strCurrentAAbbreviation = (String)AMap.get(code);

Редактировать: Размер vA составляет приблизительно 50. Триммер не должен даже быть необходимым, но определенно было бы неплохо назвать это 50 раз вместо 50 * 1,5 миллиона. , Предметы в ВА уникальны.

Редактировать: По предложению нескольких респондентов я проверил его. Результаты внизу. Спасибо, ребята.

Ответы [ 11 ]

0 голосов
/ 30 октября 2009

Я думаю, что доминирующим фактором здесь является величина ВА, поскольку цикл должен выполняться n раз, где n - это размер ВА. С картой нет петли, независимо от того, насколько велика ВА. Поэтому, если n мало, улучшение будет маленьким. Если оно будет огромным, улучшение будет огромным. Это особенно верно, потому что даже после нахождения соответствующего элемента цикл продолжает идти! Поэтому, если вы нашли соответствие в элементе 1 из списка из 2 миллионов элементов, вам все равно нужно проверить последние 1 999 999 элементов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...