kotlin 코드 실행시간 측정하기.
Android2020. 5. 17. 20:14
보통 코드의 실행시간을 측정하기 위해서는.
val start = System.currentTimeMillis()
val result = inputPlus(1, 2)
val measuredTime = System.currentTimeMillis() - start
println("result => $result || measured time ==>$measuredTime")
이런식으로 실행시간을 측정하고 싶은 메소드의 시작과, 끝! 그에 대한 시간을 넣고 구할것 같습니다.
java로 Android 개발했을 대에는 Jake Wharton의 Hugo를 사용해서 실행시간을 logcat에 출력해서 사용하고 했지만,
https://github.com/JakeWharton/hugo
kotlin으로 넘어오면서, hugo를 사용하지 못하다 보니...
그래도 kotlin에는 사용하기 편한게 있습니다.
/**
* Executes the given function [block] and returns an instance of [TimedValue] class, containing both
* the result of the function execution and the duration of elapsed time interval.
*
* The elapsed time is measured with [TimeSource.Monotonic].
*/
@SinceKotlin("1.3")
@ExperimentalTime
public inline fun <T> measureTimedValue(block: () -> T): TimedValue<T> {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return TimeSource.Monotonic.measureTimedValue(block)
}
/**
* Executes the given [block] and returns an instance of [TimedValue] class, containing both
* the result of function execution and the duration of elapsed time interval.
*
* The elapsed time is measured with the specified `this` [TimeSource] instance.
*/
@SinceKotlin("1.3")
@ExperimentalTime
public inline fun <T> TimeSource.measureTimedValue(block: () -> T): TimedValue<T> {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
val mark = markNow()
val result = block()
return TimedValue(result, mark.elapsedNow())
}
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.time/measure-timed-value.html
measureTimeValue를 이용하면 됩니다.
kotlin 1.3 에 생겼고,
val measuredTime = measureTimedValue {
inputPlus(2, 3)
}
println("result => ${measuredTime.value} || measured time ==>${measuredTime.duration}")
와 같이 사용하면, 간단히 사용할 수 있고, 해당 method의 결과도 확인할 수 있습니다.
'Android' 카테고리의 다른 글
Firebase Crashlytics에서 custom UnCaughtExceptionHandler 적용하기. (0) | 2020.12.31 |
---|---|
Kotlin collection 에서 item들의 sum 계산. (0) | 2020.07.11 |
kotlin Collection vs Sequense (0) | 2020.05.15 |
goodbye? onActivityResult... (0) | 2020.05.14 |
kotlin file read... (0) | 2019.04.17 |