我正在为基于Groovy的应用程序编写某种分析器。为此,我感兴趣的是在各种类方法中花费了多少处理时间。
现在,通过获取方法调用的开始和结束时间,可以简单地测量在每个方法中花费的纳秒数。然而,这感觉很笨,我不想花时间"外面"方法(例如在呼叫之前和之后)。我宁愿在课堂上测量时间本身,也不想手动测量时间"通过开始和结束时间,而不是自动"如果可能的话。
所以我的问题是:测量在课程的各种方法中花费的时间最好,最Groovy的方法是什么?也许通过注释?
答案 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]]