分析 Scala 方法调用的标准方法是什么?
我需要的是一个方法周围的钩子(Hook),我可以用它来启动和停止计时器。
在Java中,我使用切面编程aspectJ来定义要分析的方法并注入(inject)字节码来实现相同的目的。
Scala 中是否有一种更自然的方法,我可以定义一堆在函数之前和之后调用的函数,而不会在过程中丢失任何静态类型?
最佳答案
您想在不更改要测量计时的代码的情况下执行此操作吗?如果您不介意更改代码,那么您可以执行以下操作:
def time[R](block: => R): R = {
val t0 = System.nanoTime()
val result = block // call-by-name
val t1 = System.nanoTime()
println("Elapsed time: " + (t1 - t0) + "ns")
result
}
// Now wrap your method calls, for example change this...
val result = 1 to 1000 sum
// ... into this
val result = time { 1 to 1000 sum }
关于function - 如何在 Scala 中分析方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9160001/