이펙티브 코틀린 Item 51: 성능이 중요한 부분에는 기본 자료형 배열을 사용하라

woga·2024년 1월 13일
0

코틀린 공부

목록 보기
52/54
post-thumbnail

코틀린에서 최적화를 위해 내부적으로는 primitive(기본 자료형)을 사용할 수 있다.

기본 자료형은 아래의 특징이 있다.

  • 가볍다
    - 일반적인 객체와 다르게 추가적으로 포함되는 것들이 없기 때문에
  • 빠르다
    - 값에 접근할 때 추가 비용이 들지 않아서

그래서 대규모 데이터를 처리할 때 기본 자료형을 사용하면 큰 최적화가 이루어진다.

List와 Set 등의 컬렉션은 제네릭타입이라 기본 자료형을 사용할 수 없어 랩핑된 타입을 사용해야 하는데 일반적인 경우라면 이렇게 한대도 성능이 중요한 코드라면 IntArrayLongArray 등의 기본 자료형 배열을 사용하자.

  • Int -> Int
  • List<Int> -> List<Interger>
  • Array<Int> -> Interger[]
  • IntArray -> int[]

만약 코틀린/JVM에서 1,000,000개의 정수를 갖는 컬렉션을 만든다고 해보자.
단순하게 할당되는 영역만해도 IntArray는 400,000,016바이트고, List<Int>는 2,000,006,944바이트다. 5배 정도 차이가 난다.

따라서 메모리 소비가 중요하면 기본 자료형 배열을 사용하자.

성능적으로 1,000,000개의 숫자를 갖는 컬렉션을 사용해서 평균을 구하는 처리를 해보면 배열을 사용하는 경우가 25%정도 더 빠르다

이처럼 코드 성능이 중요한 부분을 최적화할때 기본 자료형을 포함하는 배열을 활용하자

다만, 일반적인 경우에는 List를 사용하는 것이 좋다. 왜냐하면 List가 훨씬 더 기능이 다양하고 많은 곳에서 쉽게 사용되기 때문이다.

정리

일반적으로는 Array보단 List와 Set을 사용하는 것이 좋다. 하지만 기본 자료형의 컬렉션을 굉장히 많이 보유해야하는 경우에는 성능을 높이고 메모리 사용량을 줄일 수 있도록 Array를 사용하는 것이 좋다! (To 라이브러리, 게임, 고급 그래픽 처리 개발자)

profile
와니와니와니와니 당근당근

0개의 댓글