6

我有一些代码,我想测量它在自动回归测试中连续运行时的速度。这样做的目的是提醒我对代码所做的更改会对性能产生负面影响。

在伪代码中,我想要这样的东西:

cpuTimer.start
runTest
cpuTimer.stop

diff = cpuTimer.getDuration

if diff > prevDiff // Perhaps to within a tolerance
    failTest

我正在为此查看 ThreadMXBean#getCurrentThreadCpuTime() ,但关键问题是自动化测试将在各种不同的开发人员的电脑上运行,并且将自动外包以测试具有一系列不同硬件的服务器和能力。

这会奏效,还是数字会出错?

这个问题应该如何解决?有没有更好的办法?有这种雀跃的标准工具吗?

4

2 回答 2

3

您可以尝试查看Perf4J。我还没有使用它,但它在我的调查清单上。

从他们的主页:

Perf4J 对于 System.currentTimeMillis() 就像 log4j 对于 System.out.println()

开发人员指南是一个很好的介绍。

于 2009-02-04T15:03:33.173 回答
0

一种方法是分析在 maven 和 ant 中运行的 junit 输出的标准 xml 文件。这些包含您需要的所有数据。尽管有工具可以根据这些生成报告,但我不知道有任何聚合器/观察者。

如果你把它们放在一个包含主机名、测试名、执行时间和构建号字段的数据库表中,你应该能够做你需要的大部分事情。

于 2009-02-04T14:37:50.823 回答