Array이는 C언어와 자료구조를 배우면서 많이 사용하였지만...Vector는 잘 모르겠다. java를 배우면서 Vector라는 말은 들어보았지만...배우지는 않았다. 그래서 인턴 면접을 봤을 때도 Vector에 대해 설명해 보라고 했을 때 아무말도 하지 못했다. 흠...슬프다. 하지만 이제 알았다. 하하하 이제라도 알았으니 다행이다.
Array _배열
- 어떤 객체도 다 들어감
( 어떤 객체가 들어갈지 몰라 검사하는 과정에서 Vector랑 속도차이가 나서 더 느리다. )
- 많은 양의 데이터를 처리하는 경우 유용하게 사용할 수 있다.
- 참조값이라서 데이터 접근이 느리다.
- 각 값에 대해 메모리 주소값만 가지고 있다.
- 메모리 주소로 이동하고, 그 이동된 주소에서 해당 데이터가 맞는지 확인하고 난 뒤 값을
전달한다.
[code as3]
var arr:Array = [];
[/code]
[]는 Array 객체를 의미한다. new Array()하는 것보다 []를 써주는 것이 속도가 빠르다.
Vector_벡터
- Vector 변수 선언할 때 어떤 객체가 들어갈지 미리 지정해 놓고 사용한다.
즉, 자료형이 지정되어 있어 데이터의 접근이 빠르다.
- 연속성 데이터 즉, 메모리가 연속해서 배치되어 있다.
- 해당 값을 바로 찾는다.
[code as3]
var vec:Vector = new Vector.<Object>;
[/code]
이렇게 하면 모든 객체를 담을 수 있지만, Vector가 빨라질 수 있는 이유는 정해진 포맷을 미리 지정해 놨기 때문에 별도의 연산이 필요하지 않아서이다.
#데이터 접근 : Vector(빠르다) > Array(느리다)
Vector는 Array이와는 달리 데이터형을 지정할 수 있어 데이터형에 따라 할당된 메모리 사이즈가 정해져 있기때문이다. (C에서는 데이터 사이즈를 제어할 수 있다. )
#중간에 값을 삽입하여 넣을 때 : Vector(느리다) < Array(빠르다)
Array이는 주소값만 바꿔주면 되지만, Vector는 메모리 값들을 죄다 쉬프트 해주고 공간을 마련해 놓고 데이터를 저장하기 때문이다.
#Vector가 주로 쓰이는 경우
- Bitmap 데이터나 객체의 움직임을 제어할 때, 속도를 최적화 하려고 쓰인다.
- Bitmap 에서 하나의 픽셀에 4byte씩 할당.
- FF를 2진수로 바꾸면 8비트, 비트맵 데이터 = ARGB , 8*4 = 32 bit 할당
- 이미지를 수정할 경우 Vector는 연속된 메모리의 정보를 가지고 있으므로 Vertor가 빠름.
댓글 없음:
댓글 쓰기