배열 성능 비교 (Reference type vs Value type)

김민구·2024년 11월 30일
0

C#

목록 보기
9/31

C#에서 배열의 성능은 데이터 타입(Reference Type vs. Value Type)에 따라 크게 달라진다.
메모리 관리 방식, 캐시 활용, 그리고 GC(Garbage Collector)의 영향 등 다양한 요인에 의해 발생

Reference Type(참조) 배열

  • 장점
    큰 데이터 처리 : 힙에 할당되어 큰 배열을 생성할 수 있다.
    동적 할당 : 필요에 따라 크기를 조절할 수 있다.

  • 단점
    메모리 접근 속도 : 스택에 비해 느리다.
    캐시 미스 : 데이터가 비연속적으로 분포되어 캐시 미스가 발생할 가능성이 높다.
    GC 부담 증가 : GC가 자주 개입되어 성능 저하가 발생할 수 있다.

Value Type(값) 배열

  • 장점
    메모리 효율성 : 스택에 할당되어 메모리 접근 속도가 빠르다.
    캐시 친화적 : 연속된 메모리 공간에 배치되어 캐시 활용도가 높다.
    GC 부담 감소 : GC의 개입이 적어 성능 저하가 적다.

  • 단점
    크기 제한 : 스택 크기에 제한이 있으므로 매우 큰 배열을 할당하기 어렵다.
    복사 시 오버헤드 : 배열을 복사할 때 전체 데이터가 복사된다.

실제 성능 비교

실제 성능은 데잍터 크기, 접근 패턴, 시스템 사양 등 다양한 요인으로 달라질 수 있다.

Reference Type 배열이 성능이 높은 경우

  • 큰 데이터 : 문자열, 객체 등 큰 데이터를 다룰 때
  • 동적 할당 : 배열 크기를 자주 변경해야 할 때
  • 복잡한 데이터 구조 : 다차원 배열, 불규칙한 배열 등을 사용할 때

Value Type 배열이 성능이 높은 경우

  • 작은 데이터 : int, float 등의 작은 데이터를 다룰 때
  • 연속적인 접근 : 배열 요소에 순차적으로 접근할 때
  • 자주 변경되지 않는 데이터 : 데이터가 고정되어 있을 때
profile
C#, Unity

0개의 댓글