function - 如何在 Scala 中分析方法?

标签 function scala profiling aspect

分析 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/

相关文章:

java - 在 Java 中推断方法的堆栈内存使用

c++ - 如何使用 C++ 中的函数永久更改类属性值?

javascript - jQuery 和 JavaScript 函数

scala - ScalaQuery中for comprehension的元素类型

scala - Scala 中的 F 界多态性

scala - Avro genericdata.Record 忽略数据类型

c# - 在 C# 中调用 C++ 库

c++ - 编译普通/模板函数的差异,C++

Mono profiler "The ' log' profiler 在主可执行文件中找不到,也无法从 'mono-profiler-log' 加载。”

java - 分析方法性能