J.Y.S
¿ whats my interest ?
J.Y.S
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • 트러블슈팅 기록 (7)
    • Java&Kotlin (5)
    • Server (22)
    • 데이터 엔지니어링 (3)
    • Architecture& Design Patter.. (1)
    • Daily (11)
    • 알고리즘 공부 (9)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
J.Y.S

¿ whats my interest ?

Java&Kotlin

[Kotlin] Collection 의 크기가 작은 경우 Sequence 가 성능이 더 떨어질 수 있는 이유

2022. 10. 10. 19:00

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
    'Java&Kotlin' 카테고리의 다른 글
    • [Kotlin] 제네릭스
    • [Kotlin] 클래스와 인터페이스
    • [JAVA] HashMap,HashSet에서 Object를 key로 가지는 경우 get()
    • [JAVA] 제너릭 타입으로 배열을 만들 수 없는 이유 (타입 추론)
    J.Y.S
    J.Y.S

    티스토리툴바