kyucumber
전체 글 보기

이펙티브 코틀린 아이템 52. mutable 컬렉션 사용을 고려하라

immutable 컬렉션보다 mutable 컬렉션이 성능적인 측면에서 더 빠르다.

immutable 컬렉션에 요소를 추가하려면 새로운 컬렉션을 만들면서 여기에 요소를 추가해야 한다.

operator fun <T> Iterable<T>.plus(element: T): List<T> { if (this is Collection) return this.plus(element) val result = ArrayList<T>() result.addAll(this) result.add(element) return result }

이처럼 컬렉션을 복제하는 처리는 비용이 굉장히 많이 든다. 따라서 복제 처리가 필요없는 mutable 컬렉션이 성능적 관점에서 좋다.

다만 안정성 측면에서 immutable이 좋은데, 일반적인 지역 변수는 동기화나 캡슐화 관점에서 문제가 될 수 있는 경우에 해당되지 않는다. 따라서 지역 변수로 활용할 때는 mutable 컬렉션을 사용하는 것이 더 합리적이다.

정리

가변 컬렉션은 일반적으로 추가 처리가 빠르다.

immutable 컬렉션은 컬렉션 변경 관련 처리를 세부적으로 조정할 수 있다. 하지만 지역 스코프에서는 세부적인 조정이 필요하지 않으므로 가변 컬렉션을 사용하는 것이 좋다.

Reference

  • 이펙티브 코틀린 - 프로그래밍 인사이트, 마르친 모스칼라 지음, 윤인성 옮김

개인적인 기록을 위해 작성된 글이라 잘못된 내용이 있을 수 있습니다.

오류가 있다면 댓글을 남겨주세요.

Table of contents