lmi*_*asf 8 performance kotlin
我需要检查一个函数需要运行多长时间.我有以下功能来解决相同的任务:
mixAnimalsA
fun mixAnimalsA(a1: Animal, a2: Animal) =
when (setOf(a1, a2)) {
setOf(Animal.OWL, Animal.Leopard) -> Beast.OWLPARD
setOf(Animal.ELEPHANT, Animal.BUTTERFLY) -> Beast.BUTTERPHANT
else -> throw Exception("Not possible combination")
}
Run Code Online (Sandbox Code Playgroud)
mixAnimalsB
fun mixAnimalsB(a1: Animal, a2: Animal) =
when (setOf(a1, a2)) {
(c1 == Animal.OWL && c2 == Animal.Leopard) ||
(c2 == Animal.OWL && c1 == Animal.Leopard) -> Beast.OWLPARD
(c1 == Animal.ELEPHANT && c2 == Animal.BUTTERFLY) ||
(c2 == Animal.ELEPHANT && c1 == Animal.BUTTERFLY)-> Beast.BUTTERPHANT
else -> throw Exception("Not possible combination")
}
Run Code Online (Sandbox Code Playgroud)
Animal并且Beast是枚举.如何衡量每个函数运行的时间?
zsm*_*b13 19
如果您正在寻找代码内解决方案,您可以使用measureTimeMillis和measureNanoTime,如下所示:
val time = measureTimeMillis {
// call your function here
}
Run Code Online (Sandbox Code Playgroud)
它们分别以毫秒和纳秒返回测量的时间.
s1m*_*nw1 12
测量块返回结果
我想测量一个方法的时间,我也需要后来的结果.因此我创建了这个函数:
inline fun <R> executeAndMeasureTimeMillis(block: () -> R): Pair<R, Long> {
val start = System.currentTimeMillis()
val result = block()
return result to (System.currentTimeMillis() - start)
}
Run Code Online (Sandbox Code Playgroud)
你可以这样称呼它:
val (response, duration) = executeAndMeasureTimeMillis {
restTemplate.getForObject<AnyObject>(uri)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4609 次 |
| 最近记录: |