KOTLIN · 성능
시퀀스 vs 리스트 성능
시퀀스(지연 평가)와 리스트(즉시 평가)의 성능 차이를 이해합니다. 데이터 크기와 연산 체인에 따른 선택 기준입니다.
성능중급sequencelistlazy-evaluationintermediate-collection
핵심 설명
시퀀스(지연 평가)와 리스트(즉시 평가)의 성능 차이를 이해합니다. 데이터 크기와 연산 체인에 따른 선택 기준입니다.
Kotlin code
import kotlin.system.measureTimeMillis
fun main() {
val data = (1..5_000_000).toList()
// 리스트: 매 연산마다 중간 컬렉션 생성
val listTime = measureTimeMillis {
data.filter { it % 2 == 0 }
.map { it.toLong() * it }
.take(100)
.sum()
}
// 시퀀스: 원소별 처리, 중간 컬렉션 없음
val seqTime = measureTimeMillis {
data.asSequence()
.filter { it % 2 == 0 }
.map { it.toLong() * it }
.take(100)
.sum()
}
println("리스트: ${listTime}ms")
println("시퀀스: ${seqTime}ms")
println("시퀀스가 ${"%.1f".format(listTime.toDouble() / seqTime)}배 빠름")
// 작은 컬렉션에서는 리스트가 빠를 수 있음
val small = (1..100).toList()
val smallList = measureTimeMillis {
repeat(100000) { small.filter { it > 50 }.map { it * 2 } }
}
val smallSeq = measureTimeMillis {
repeat(100000) { small.asSequence().filter { it > 50 }.map { it * 2 }.toList() }
}
println("
소규모 - 리스트: ${smallList}ms, 시퀀스: ${smallSeq}ms")
}학습 팁
일반 규칙: 원소 수 10,000개 이상이거나 take로 일부만 필요한 경우 시퀀스가 유리합니다.
주의할 점
시퀀스를 sorted()와 함께 사용하면 전체 원소를 수집해야 하므로 지연 평가의 이점이 사라집니다.
자주 묻는 질문
시퀀스 vs 리스트 성능란 무엇인가요?
시퀀스(지연 평가)와 리스트(즉시 평가)의 성능 차이를 이해합니다. 데이터 크기와 연산 체인에 따른 선택 기준입니다.
시퀀스 vs 리스트 성능 학습 시 주의할 점은 무엇인가요?
시퀀스를 sorted() 와 함께 사용하면 전체 원소를 수집해야 하므로 지연 평가의 이점이 사라집니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.