KOTLIN · 성능
코루틴 성능 최적화
코루틴의 성능을 최적화하는 기법입니다. 불필요한 중단 방지, 적절한 디스패처 선택, 배치 처리를 다룹니다.
성능중급coroutine-performanceparallelbufferbatch
핵심 설명
코루틴의 성능을 최적화하는 기법입니다. 불필요한 중단 방지, 적절한 디스패처 선택, 배치 처리를 다룹니다.
Kotlin code
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import kotlin.system.measureTimeMillis
suspend fun fetchItem(id: Int): String {
delay(100) // 네트워크 지연 시뮬레이션
return "item-$id"
}
fun main() = runBlocking {
// 나쁜 예: 순차 실행
val seqTime = measureTimeMillis {
val results = (1..10).map { fetchItem(it) }
}
println("순차: ${seqTime}ms")
// 좋은 예: 병렬 실행
val parTime = measureTimeMillis {
val results = coroutineScope {
(1..10).map { async { fetchItem(it) } }.awaitAll()
}
}
println("병렬: ${parTime}ms")
// Flow 배치 처리
val batchTime = measureTimeMillis {
(1..100).asFlow()
.buffer(10) // 버퍼링
.map { fetchItem(it) }
.collect {}
}
println("Flow 버퍼: ${batchTime}ms")
// 최적: chunked + 병렬
val optTime = measureTimeMillis {
(1..100).chunked(10).map { batch ->
coroutineScope {
batch.map { async { fetchItem(it) } }.awaitAll()
}
}
}
println("청크 병렬: ${optTime}ms")
}학습 팁
flow.buffer()를 사용하면 방출과 수집이 별도 코루틴에서 실행되어 파이프라인 병렬성이 향상됩니다.
주의할 점
무제한 병렬 요청은 서버에 과부하를 줄 수 있습니다. Semaphore나 limitedParallelism으로 동시 요청 수를 제한하세요.
자주 묻는 질문
코루틴 성능 최적화란 무엇인가요?
코루틴의 성능을 최적화하는 기법입니다. 불필요한 중단 방지, 적절한 디스패처 선택, 배치 처리를 다룹니다.
코루틴 성능 최적화 학습 시 주의할 점은 무엇인가요?
무제한 병렬 요청은 서버에 과부하를 줄 수 있습니다. Semaphore 나 limitedParallelism 으로 동시 요청 수를 제한하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.