我有一些代码,我想测量它在自动回归测试中连续运行的速度。这样做的目的是提醒我对代码所做的更改,这些更改会对性能产生负面影响。
在伪代码中,我想要这样的东西:
cpuTimer.start
runTest
cpuTimer.stop
diff = cpuTimer.getDuration
if diff > prevDiff // Perhaps to within a tolerance
failTest
我正在考虑使用ThreadMXBean#getCurrentThreadCpuTime(),但关键问题是自动化测试将在各种不同的开发人员的PC上运行,并将自动进行测试,以测试一系列的不同的硬件和功能。
这会起作用,还是数字会出错?
如何解决这个问题?有没有更好的办法?是否有这种标准的标准工具?
答案 0 :(得分:3)
您可能会尝试查看Perf4J。我还没有使用它,但它列在我要调查的事项列表中。
从他们的主页:
Perf4J是System.currentTimeMillis(),因为log4j是System.out.println()
Developer Guide是一个很好的介绍。
答案 1 :(得分:0)
一种方法是分析从maven和ant中运行的junit输出的标准xml文件。这些包含您需要的所有数据。虽然有基于这些工具生成报告的工具,但我不知道任何聚合器/观察者。
如果将这些文件放在包含字段hostname,testname,executiontime和buildNumber的数据库表中,您应该可以完成大部分所需的操作。