测量Groovy类方法所花费的时间

时间:2014-10-20 13:32:44

标签: groovy annotations profiler

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

现在,通过获取方法调用的开始和结束时间,可以简单地测量在每个方法中花费的纳秒数。然而,这感觉很笨,我不想花时间"外面"方法(例如在呼叫之前和之后)。我宁愿在课堂上测量时间本身,也不想手动测量时间"通过开始和结束时间,而不是自动"如果可能的话。

所以我的问题是:测量在课程的各种方法中花费的时间最好,最Groovy的方法是什么?也许通过注释?

1 个答案:

答案 0 :(得分:9)

Groovy附带BenchmarkInterceptor

  

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

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]]