我想对线程及其交互(例如共享数据)进行性能测试。为此,我尝试了 Qt 提供的 Tutorial for Benchmarks,它引导我编写以下代码。
基准级:
class Bm : public QObject
{
Q_OBJECT
private slots:
void Benchmark_1()
{
bm_1 bm;
QBENCHMARK
{
pool.start(&bm); //pool is a QThreadpool
pool.start(&bm);
pool.waitForDone();
}
}
void Benchmark_2()
{
bm_1 b_1; bm_2 b_2;
QBENCHMARK
{
pool.start(&b_1);
pool.start(&b_2);
pool.waitForDone();
}
}
};
包含线程任务的类:
class bm_1 : public QRunnable //bm_2 looks just like bm_1
{
public:
void test_1();
void run()
{
test_1();
}
};
主函数被 QTest 宏取代:
QTEST_MAIN(Bm)
QTEST_MAIN 返回 0,这意味着,根据 Qt 文档,没有要测试的内容。如果我现在尝试使用调试器来了解可能出现的问题,我会收到两个启动错误:
Gdb 进程已终止(0)
和
在启动程序以代码 0xc0000138 退出期间
我做错什么了?
我需要QTest
(而不是例如 ellapsedTimer)来测量没有操作系统和 adobe 更新程序污染的性能。这是一台公司拥有的笔记本电脑。我检查了我的包含,甚至重新安装了 Qt。