반복문 성능 비교

반복문에는 크게 for, while 문이 있다. while 문은 잘못하면 무한 루프에 빠지기 쉬우므로 for문을 권장한다.
또한  반복문 안에서 꼭 필요하지 않은 소스는 반복문 밖으로 추출시키도록 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Sample {
 
  public static void main(String args[]) {
 
    List<Integer> list = new ArrayList<>();
    for (int i = 0; i < 10000; i++) {
      list.add(i);
    }
 
 
    for (int i = 0; i < list.size(); i++) { // #1
      System.out.println(list.get(i).toString());
    }
 
    int size = list.size();
    for (int i = 0; i < size; i++) { // #2
      System.out.println(list.get(i).toString());
    }
 
    for (Integer integer : list) { // #3
      System.out.println(integer.toString());
    }
 
  }
}
cs

위와 같은 반복문의 경우, 어떤 것이 가장 빠를까?
빠른 순서로 나열하면 다음과 같다. #2 > #1 > #3 

#1처럼 조건식에 list.size()를 사용하면 size() 메소드가 반복 호출된다. #2처럼 변수로 선언하여 사용하는 것이 좋다.
#3은 JDK 1.5부터 지원하는 향상된 for문이다. 배열이나 컬렉션에 저장된 요소들을 별도의 형변환이나 get 메소드가 필요없어 편리하게 처리할 수 있다.
단, 처음부터 끝까지 모든 요소를 반복할 때에 권장한다. 순서를 반대로하거나 특정 요소부터 탐색할 때에 부적절하다. 

물론 성능 차이가 얼마나지 않는다. 하지만 규모가 크거나 반복 횟수가 큰 경우 성능에 지장을 줄 수 있다.

'Development > Java' 카테고리의 다른 글

Garbage Collection 과정  (0) 2018.04.28
Garbage Collection 용어 정리  (0) 2018.04.26
AES256 암호화 오류 해결  (4) 2017.10.06
List 중복 제거  (0) 2017.07.13
Reflection 클래스 정보  (0) 2017.07.12

+ Recent posts