2010년 3월 20일 토요일

Vector 와 Array의 차이

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가 빠름.

 

댓글 없음:

댓글 쓰기