0
我想對線程及其交互(例如共享數據)進行性能測試。爲了達到這個目的,我嘗試了Qt提供的基準測試教程,這使我可以編寫下面的代碼。QTEST_MAIN不使用提供的測試類
的基準級:
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();
}
}
};
包含該線程任務類:
QTEST_MAIN(Bm)
:
class bm_1 : public QRunnable //bm_2 looks just like bm_1
{
public:
void test_1();
void run()
{
test_1();
}
};
主要功能獲得由QTEST宏替換
QTEST_MAIN返回0,這意味着,根據Qt文檔,沒有什麼可測試的。如果我現在嘗試使用調試器,得到一個什麼樣可能出錯一個glimp,我得到兩個啓動 - 錯誤:
GDB的進程被終止(0)
和
在啓動程序退出,代碼0xc0000138
我做了什麼錯?
我需要QTest
(而不是ellapsedTimer)來測量沒有OS和adobe updater污染的性能。這是一家公司擁有的筆記本電腦我檢查了我的包裝,我甚至重新安裝了Qt。