KOTLIN · 성능
인라인 함수 성능 (Inline Functions)
inline 키워드로 고차 함수의 람다 오버헤드를 제거합니다. 객체 할당과 가상 호출을 방지합니다.
성능중급inlinenoinlinecrossinlinelambda-overhead
핵심 설명
inline 키워드로 고차 함수의 람다 오버헤드를 제거합니다. 객체 할당과 가상 호출을 방지합니다.
Kotlin code
// inline: 호출 지점에 함수 본문 삽입
inline fun <T> measureExecution(label: String, block: () -> T): T {
val start = System.nanoTime()
val result = block()
val elapsed = (System.nanoTime() - start) / 1_000_000.0
println("$label: ${"%.3f".format(elapsed)}ms")
return result
}
// noinline: 특정 람다만 인라인 제외
inline fun transaction(
noinline onError: (Exception) -> Unit = {},
block: () -> Unit
) {
try { block() }
catch (e: Exception) { onError(e) }
}
// crossinline: 비지역 반환 방지
inline fun runSafely(crossinline block: () -> Unit) {
val thread = Thread { block() }
thread.start()
thread.join()
}
fun main() {
val sum = measureExecution("리스트 합계") {
(1..1_000_000).sum()
}
println("결과: $sum")
transaction(onError = { println("오류: ${it.message}") }) {
println("트랜잭션 실행")
}
runSafely { println("안전 실행 완료") }
}학습 팁
표준 라이브러리의 let, apply, also 등은 모두 inline이라 런타임 오버헤드가 없습니다.
주의할 점
큰 함수를 inline으로 선언하면 호출 지점마다 코드가 복사되어 바이트코드가 비대해집니다. 짧은 래퍼 함수에만 사용하세요.
자주 묻는 질문
인라인 함수 성능 (Inline Functions)란 무엇인가요?
inline 키워드로 고차 함수의 람다 오버헤드를 제거합니다. 객체 할당과 가상 호출을 방지합니다.
인라인 함수 성능 (Inline Functions) 학습 시 주의할 점은 무엇인가요?
큰 함수를 inline으로 선언하면 호출 지점마다 코드가 복사되어 바이트코드가 비대해집니다. 짧은 래퍼 함수에만 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.