Я хочу выполнить тест производительности на потоки и их взаимодействия (например, общие данные). Чтобы достичь этого, я попробовал Qt, предоставленный Tutorial for Benchmarks, который заставил меня написать следующий код.QTEST_MAIN не использует предоставленный Testclass
эталоном класса:
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, ничего не нужно тестировать. Если теперь я пытаюсь использовать отладчик, чтобы получить glimp, что может пойти не так, я получаю два запуска-ошибки:
Gdb-процесс был прекращен (0)
и
Во время запуска программы завершался с кодом 0xc0000138
Что я сделал не так?
Мне нужно QTest
(а не, например, ellapsedTimer) для измерения производительности без загрязнения ОС и мерцающего обновления. Это принадлежащий компании ноутбук. Я проверил свои включения, и я даже переустановил Qt.