본문 바로가기
Unity 끄적임

Array와 List 그리고 IList

by Dev_Hugh 2024. 7. 20.
728x90
반응형

List Vs Array

- List 내부를 보면 Array를 사용한다. 즉 List는 Array를 한번 감 싼 구조라고 생각하면 편하다.

 

둘의 가장 큰 차이는 Capacity에 유연성

- 데이터 사이즈가 가변적인 경우 List를 고정적인 경우 Array를 사용하기 때문

-  Array는 연속적인 메모리 위치에 동일한 데이터 유형의 요소를 저정하고, List는 연속적인 메모리 위치에 저장되지 않는다.

 

성능 차이

그러다 보니 List는 삽입 삭제 과정에서 Array보다 느리다. 왜냐면 사이즈가 변하면서 메모리를 재할당 하니깐.

 

IList?

IList는 배열과 ArrayList의 기반 인터페이스다. 그치만 Non-Generic이다.

그러다보니 컬렉션에 추가된 모든 요소가 Object로 변환되고 이걸 다시 쓰려면 타입을 변환하니깐 결국 Boxing과 UnBoxing이 일어난다.

 물론 이를 피하기 위해 VariantList와 같이 피하는 방법도 있다고 한다.

 

Generic에 대해 알고 싶으면 MSDN에 접속하면 나옵니다.

사실 이 글은 정보 전달 글 같지만, 유지 보수 측면에서도 생각해보면 좋을거 같습니다.

우리가 기능을 구현해 가면서 공용으로 사용할 Class를 만들고 그 클래스 내에서 공통으로 어떤 연산을 처리해서 Return하는 함수를 만들 때 Return하는 자료구조를 List와 Array 두 개로 분리해서 만들었을 때 IList를 통해 해결할 수 도 있을 것입니다. 그러나 필자는 이런 방법이 좋은가? 에 대해 의문입니다.

 

위에서 말한 Non-Generic이기에 성능이 안좋다? 보단 왜 배열과 리스트를 선택해서 사용했고, 공용 클래스 내 공용 함수에 목적이 뭔지 생각해본다면 결국 그 함수가 반환하는 자료구조가 명확해야 그 다음 기능을 붙일 때 유지보수가 좋지 않을까 생각합니다

 

728x90
반응형

'Unity 끄적임' 카테고리의 다른 글

fake null 관련한 이야기  (0) 2024.06.14
Unity IL2CPP, JIT, AOT  (0) 2024.05.05
코루틴(Coroutine)  (0) 2023.11.20
[게임수학] 내적, 외적 이야기  (0) 2023.11.17
월드 공간과 UI 공간  (0) 2023.10.17