Je souhaite effectuer un test de performance sur les threads et leurs interactions (par exemple, des données partagées). Pour ce faire, j'ai essayé le tutoriel fourni par Qt pour Benchmarks, qui m'a conduit à écrire le code suivant.QTEST_MAIN n'utilise pas la classe de test fournie
L'indice de référence Classe:
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();
}
}
};
La classe qui contient la tâche pour le fil:
class bm_1 : public QRunnable //bm_2 looks just like bm_1
{
public:
void test_1();
void run()
{
test_1();
}
};
La fonction principale sera remplacé par un QTest-macro:
QTEST_MAIN(Bm)
QTEST_MAIN renvoie 0, ce qui signifie que, selon la documentation Qt, il n'y a rien à tester. Si je vais maintenant essayer d'utiliser le débogueur, pour obtenir un glimp de ce qui pourrait aller mal, je reçois deux démarrage-erreurs:
GdB processus a pris fin (0)
et
Au cours de programme de démarrage liquide' avec le code 0xc0000138
Qu'est-ce que je fait de mal?
J'ai besoin de QTest
(et non par exemple ellapsedTimer) pour mesurer la performance sans pollution de mise à jour d'OS et d'adobe. C'est un ordinateur portable appartenant à l'entreprise. J'ai vérifié mes inclusions, et j'ai même réinstallé Qt.