본문 바로가기

자바

Auto Boxing/UnBoxing

Boxing

원시 타입에서 Wrapper 클래스로 변환하는 작업

UnBoxing

Wrapper  클래스에서 원시 타입으로 변환하는 작업

 

예시

Auto Boxing

// Boxing
Integer a = new Integer(10);
// Auto Boxing
Integer b = 10;

Auto UnBoxing

Integer a = 10;
// UnBoxing
int b = a.intValue();
// Auto UnBoxing
int c = a;

 

성능

Auto Boxing/UnBoxing 기능으로 편의성은 제공되지만 내부 작업이 추가적으로 일어나기 때문에 연산 작업에 사용하는 것은 성능면에서 좋지 않다. 

 

long t = System.currentTimeMillis();
Long sum = 0L;
for (long i = 0; i < 10000000; i++) {
    sum += i;
}
System.out.println("실행 시간: " + (System.currentTimeMillis() - t) + " ms");
/*
실행 시간: 66 ms
*/

 

long t = System.currentTimeMillis();
long sum = 0L;
for (long i = 0; i < 10000000; i++) {
    sum += i;
}
System.out.println("실행 시간: " + (System.currentTimeMillis() - t) + " ms");
/*
실행 시간: 4 ms
*/

1000만 번 반복 연산 기준 Wrapper Class 사용 시 66ms 원시 타입 사용 시 4ms가 측정되었다. 불필요한 성능 저하가 발생하지 않도록 주의가 필요하다.