Sequence는 다음과 같은 특징이 있어 컬렉션의 크기가 큰 경우 성능면에서 적합하다.
- 컬렉션의 계산 결과를 저장하는 과정에서 중간 리스트가 만들어지지 않음.
--> 많은 메모리를 차지하게 될 수 있음 - lazy 연산 방식으로 step-by-step 연산 방식으로 이루어 지지 않음.
--> 최소한의 operation 이 이루어짐 - infinite sequence가 가능하다. (<- 이 부분이 왜 장점이고 어떤 용도로 사용되는지 잘 이해가 안감.)
하지만, 코틀린 표준 라이브러리의 컬렉션 함수들은 대부분 람다를 인자로 받고(=고차 함수), inlinine 함수이다.
인라인 함수는 컴파일 시점에 컬렉션 함수를 호출한 부분이 바이트코드로 바뀌기 때문에 빨라 컬렉션의 크기가 작은 경우에는 오히려 일반 컬렉션 연산이 더 나을 수 있다.
참고:
Kotlin in Action 8장(고차 함수),
Effective Kotlin: Prefer Sequence for big collections with more than one processing step
'Java&Kotlin' 카테고리의 다른 글
[Kotlin] 제네릭스 (0) | 2022.05.21 |
---|---|
[Kotlin] 클래스와 인터페이스 (0) | 2022.04.27 |
[JAVA] HashMap,HashSet에서 Object를 key로 가지는 경우 get() (0) | 2022.03.11 |
[JAVA] 제너릭 타입으로 배열을 만들 수 없는 이유 (타입 추론) (0) | 2022.03.09 |