有没有一种简单的方法可以知道 QT Test Framework for C++ 中每个测试用例消耗了多少时间?
获得一些指标将非常有帮助。
您可以编写一个自定义 Timer 类,该类在创建时启动通常单调的经过计时器,并在删除时打印经过的时间(请参阅 参考资料QElapsedTimer::elapsed()
):
计时器.h:
#include <QElapsedTimer>
class Timer {
public:
Timer() {
timer.start();
}
~Timer() {
qint64 ms = timer.elapsed();
qDebug("Time needed: %s ms%s", ms,
timer.isMontonic() ? "" : " (WARNING: non-monotonic)");
}
private:
QElapsedTimer timer;
}
使用QElapsedTimer
over的好处QTime
是 Qt 将尝试使用每个平台上最好的可用单调计时器。QTime
不保证是单调的:时间同步守护进程/服务调整时钟等时会减少。
Timer t;
现在在要测量时间的每个测试用例的开头插入该行;没有更多的代码。这只是创建一个Timer
对象,该对象启动内部计时器,并在对象超出范围(在方法的末尾)时删除该对象,从而打印经过的时间:
您的测试用例(.cpp):
#include "timer.h"
...
void TestClass::myTestCase1()
{
Timer t; //the only line needed to add to your test case
... //the code for test case
}
void TestClass::myTestCase2()
{
Timer t; //the only line needed to add to your test case
... //the code for test case
}
...
time_t t = time(0);
将定义一个自纪元以来以毫秒为单位的时间变量,并将其设置为当前时刻。在测试前关闭其中一个,在测试后关闭一个,然后比较两者以了解测试花费了多长时间。正如 cbamber85 所指出的,它会因许多事情而有所不同,因此如果您希望您的指标具有任何意义,您需要保持您的平台稳定(即使那样它们也只是相对而言才有意义),但这至少是一些事情你可以一起工作。