2015년 9월 14일 월요일

박싱과 언박싱

참조 : http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=5&ID=671

박싱 : 값 형식을 참조 형식으로 변화하는 것
언박싱 : 참조 형식을 값 형식으로 변환하는 것

박싱
1. 스택의 데이터가 힙으로 복사
예)
int = 123;
object o = i; //박싱(묵시적 변환)
언박싱
1. 힙에 있는 데이터가 스택으로 복사
예)
int i = 123;  //값 형식
object o = i;  //박싱
int j = (int) o; //언박싱(명시적 변환)
>> 박싱/언박싱은 비용이 꽤나 많이 드는 작업
값 형식을 박싱 하는 경우 완전히 새로운 객체를 할당하고 구성해야 하며 언박싱에 필요한 캐스팅도
상당한 계산 과정이 필요합니다

“boxing 및 unboxing 과정에는 많은 처리 작업이 필요합니다. 값 형식을 boxing할 때는 완전히 새로운 개체가
만들어져야 하며, 이러한 작업에는 할당 작업보다 최대 20배의 시간이 걸립니다. unboxing을 할 때는 캐스팅
과정에 할당 작업보다 4배의 시간이 걸릴 수 있습니다
”

편리하기는 하지만 그 만큼의 비용은 지불해야 하는 것입니다



댓글 없음:

댓글 쓰기