我想测量一组单元测试的执行时间,以便能够在进行更改时自动监视和比较性能.是否有任何合适的性能计数器可以从Java本身轻松访问?即,类似于:
count1 = <call performance counter func>
executeUnitTest();
count2 = <call performance counter func>
testPerformance = count2 - count1;
Run Code Online (Sandbox Code Playgroud)
满足这些额外要求:
您可以考虑几种方法。
“检测”发生在编译或加载时,并更改类文件,以便它们记录正在发生的事情。通常,这用于执行诸如测量单元测试的代码覆盖率之类的事情,但您可能可以修改代码覆盖率工具以仅保留执行计数。根据记忆,代码覆盖率工具Emma是一个很好的开源起点。由于 GC 没有被检测,因此不会被计算在内。很可能有一些开箱即用的东西。
分析工具可能至少可以为您提供一些您想要的数据。有可用的堆,包括标准的“java”可执行文件,能够生成大量您可能会使用的信息。
VM 中还提供了相当复杂的分析挂钩,可以通过标准 JVMTI API 访问 API,从 IIRC 1.5 开始,该 API 是标准 API 的一部分。
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |