度量在Groovy类方法中花费的时间

度量在Groovy类方法中花费的时间,groovy,annotations,profiler,Groovy,Annotations,Profiler,我正在为基于Groovy的应用程序编写某种分析器。为此,我感兴趣的是在各种类方法中花费了多少处理时间 现在,通过获取方法调用的开始和结束时间,可以简单地测量每个方法中花费的纳秒数。但是,这感觉很笨拙,我不想把时间花在方法之外(例如调用之前和之后)。我更希望在类本身内测量时间,但也不是“手动”测量开始和结束时间,而是“自动”,如果可能的话 所以我的问题是:用什么方法来衡量一个类的各种方法所花费的时间是最好的也是最常规的?可能通过注释?Groovy附带: 在和之前注册每个方法调用的时间戳的侦听器 调

我正在为基于Groovy的应用程序编写某种分析器。为此,我感兴趣的是在各种类方法中花费了多少处理时间

现在,通过获取方法调用的开始和结束时间,可以简单地测量每个方法中花费的纳秒数。但是,这感觉很笨拙,我不想把时间花在方法之外(例如调用之前和之后)。我更希望在类本身内测量时间,但也不是“手动”测量开始和结束时间,而是“自动”,如果可能的话

所以我的问题是:用什么方法来衡量一个类的各种方法所花费的时间是最好的也是最常规的?可能通过注释?

Groovy附带:

在和之前注册每个方法调用的时间戳的侦听器 调用之后。时间戳存储在内部,可以检索 通过与

getCalls()

statistic()
API

用法示例:

def proxy = ProxyMetaClass.getInstance(ArrayList.class)
proxy.interceptor = new BenchmarkInterceptor()
proxy.use {
    def list = (0..10000).collect{ it }
    4.times { list.size() }
    4000.times { list.set(it, it+1) }
}
proxy.interceptor.statistic()
将生成以下输出:

[[size, 4, 0], [set, 4000, 21]]

类似于?@cfrick:哦,是的,看起来不错,非常感谢!我会把它变成答案,因为我不确定,如果这样一个包装方法是你在哪里之后。让我们看看其他人有什么想法。