본문 바로가기

Programming!

Sonar : Performance - Inefficient use of keySet iterator instead of entrySet iterator

가끔 소나 누님이 내뱉는 크리티컬 문제이다.


예전( 1.5 이전?)에 Map을 KeySet에 의해 루프를 돌던 형태인데, 이경우 key에 의한 룩업 과정을 한번 더 거치게 되므로 성능상 불이익이 있다는 얘기란다.


사실 얼마나? 로 물어보면 딱히...


여튼 소스는 이렇게 수정했다.


이전 코드

Set<Long> optionKeySet = optionsMap.keySet();

for (Long optionKey : optionKeySet) {

    options.add(optionsMap.get(optionKey));

}

return options;


이후코드


for (Entry<Long, Option> entry : optionsMap.entrySet()) {

options.add(entry.getValue());

}

return options;


근데, 담겨지는 리스트(options) 를 보니 루프 이전에 딱히 뭔가 하는게 없다..


return ImmutableList.copyOf(optionsMap.values());


수정.



테스트 돌려보고 이상없어서 push