围绕 Kotlin 挂起函数的方面

sil*_*box 6 aop aspectj kotlin micrometer kotlin-coroutines

围绕 Kotlin 挂起函数创建方面的正确方法是什么?

根据我的观察,Micrometer 的 @Timed 方面确实适用于它们,但显示的结果不正确 - 看起来它测量的是方法调用和暂停之间的时间,而不是方法中花费的全部时间(应该包括暂停后的时间)

我想实现的示例:

@CoroutineTimer
suspend fun dbCall() {
    repository.someQuery().awaitFirst() // suspension point
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想知道花在dbCall函数上的全部时间,用自定义@CoroutineTimer注释标记。有没有办法这样做?

Web*_*eak 0

您可以这样测量执行时间:

suspend fun dbCall() {
    val (result, duration) = measureTimedValue {
        repository.someQuery().awaitFirst() // suspension point
    }
    println(duration)
    return result
}
Run Code Online (Sandbox Code Playgroud)